Load Flow (Power Flow)

pandapower OpenDSS

Load Flow (power flow) computes steady-state voltages, currents, and power flows on your diagram. Run this first; most other studies assume a network that already solves.

Where to find it

Simulate → Load Flow. Use the Pandapower tab for balanced networks, or the OpenDSS tab for unbalanced feeders and time-varying modes.

When to use

  • Check that bus voltages stay inside a sensible band
  • See line and transformer loading and system losses
  • Test a dispatch or load change before running short-circuit or OPF

How to run

  1. Build a connected network with a slack (External Grid or slack generator).
  2. Click Simulate → Load Flow and pick an engine tab.
  3. Keep the defaults for a first run, then click Run.
  4. Read voltages and loadings on the diagram. The Network Health Dashboard opens after a successful solve.

What you will see

Bus voltage (pu and angle), line and transformer loading, and P/Q at generators, loads, and the external grid. You can then export a PDF report, compare two runs, or plot line current vs distance — those tools reuse this solve.

How the solvers work

Pandapower offers Newton-Raphson (default), Iwamoto, Backward Forward Sweep, Gauss-Seidel, FDBX, and FDXB. Above 150 buses, eligible Newton-Raphson runs use lightsim2grid and later Calculates reuse the saved model (Large networks). OpenDSS supports snapshot, daily, yearly, dutycycle, and Monte Carlo modes. The solver iterates the power-balance equations until the mismatch is below the tolerance. Heavily compensated cable networks (for example a large offshore farm with OLTCs and variable shunt reactors) may need more than a single Newton run — see solver fallback.

Dialog parameters (Pandapower)

Parameter Description Type Options/Value Range Default
Frequency System frequency radio 50 Hz, 60 Hz 50 Hz
Algorithm Power flow solution algorithm radio Newton-Raphson (nr), Iwamoto (iwamoto_nr), Backward Forward Sweep (bfsw), Gauss-Seidel (gs), FDBX (fdbx), FDXB (fdxb) Newton-Raphson
Calculate Voltage Angles Whether to calculate voltage angles (required for accurate active power flow) radio Auto, True, False Auto
Initialization Initial voltage guess strategy radio Auto, Flat (1.0 pu), DC Auto
Max Iterations Maximum number of iterations before stopping number 1-1000 100
Tolerance Convergence tolerance (power mismatch) number > 0 1e-6
Enforce Q Limits

Maps to pandapower enforce_q_lims (bool, default False) — respect generator reactive power limits in the load flow.

If Yes, the reactive power limits in net.gen.max_q_mvar / min_q_mvar and net.sgen.max_q_mvar / min_q_mvar are respected. If generator reactive power capability curves are defined, the corresponding min and max Q limits overwrite (internally) the default values from the max_q_mvar / min_q_mvar parameters.

For gen elements, pandapower runs a second load flow when reactive power limits are violated at any generator, so run time can increase if reactive power must be curtailed.

Note: enforce_q_lims only applies to gen elements when the algorithm is Newton-Raphson (algorithm="nr").

checkbox Yes/No No
Export Pandapower Python Code Download generated Python code for the network checkbox Yes/No No
Export Pandapower Results Download results in text format checkbox Yes/No No
Include controller Three independent checkboxes (see Include controller): two-winding DiscreteTapControl, three-winding DiscreteTapControl, and shunt step control (DiscreteShuntController or Line P→shunt step, per shunt). Park Controller is not gated here. checkbox Yes/No each No

Include controller (Pandapower)

The Load Flow dialog (Pandapower tab) has three independent checkboxes under Include controller. Tick only the families you want to move during that run. Grid Code Compliance (P-Q) uses its own Two-winding transformer tap changer, Three-winding transformer tap changer, Shunt reactor control, and Shunt on/off options instead.

  • Two-winding transformer tap changer — pandapower DiscreteTapControl on two-winding transformers that have discrete tap control enabled in the transformer dialog.
  • Three-winding transformer tap changer — the same, for three-winding transformers.
  • Shunt reactor tap changer — pandapower DiscreteShuntController (voltage / target step) or Line P→shunt step lookup from the shunt Control tab. A reactor uses only one of those two; the shunt dialog shadows the other. Whichever mode is enabled on the reactor still needs this checkbox; it no longer runs from the shunt dialog alone.

Park Controller is a separate diagram element with its own enable toggle. It is not gated by these three checkboxes.

Discrete Tap Control (DiscreteTapControl)

For pandapower load flow only, you can model discrete OLTC/NLTC behaviour with pandapower’s DiscreteTapControl controller:

  1. Open the Transformer or Three Winding Transformer dialog for each unit that should regulate voltage.
  2. Enable discrete tap control, choose control side, and set vm_lower_pu / vm_upper_pu (deadband).
  3. Run Load Flow, stay on the Pandapower tab, and tick the matching Include controller checkbox (two-winding and/or three-winding).

Electrisim sends discrete tap settings and the matching run_control_trafo2w / run_control_trafo3w flags to the backend; the solver may change tap_pos within tap_min…tap_max to keep the controlled bus inside the band.

Seeing the tap position after the run: For transformers that used DiscreteTapControl, the on-diagram transformer result box shows the tap position after the controlled load flow (and initial → final if it moved). If you export Pandapower results to a text file, the transformer table includes a Tap (control) column and a DISCRETE TAP CONTROL (summary) section. The JSON API also returns a tap_control_results array (tap limits, controlled-side voltage, band, etc.) for tooling or future UI.

Solver fallback (Pandapower)

If the requested algorithm does not converge, the backend retries a short sequence of more robust settings rather than failing after the first Newton-Raphson divergence. Typical later plans:

  1. Same algorithm and initialisation, but without transformer/shunt controllers (setpoints restored to the values from the diagram).
  2. More Newton iterations (e.g. 50).
  3. Flat start with a higher iteration limit.
  4. Iwamoto Newton-Raphson (step-size multiplier) with a flat start — intended for ill-conditioned, heavily compensated cases that plain Newton overshoots.

If a fallback plan succeeds, results are still shown on the diagram. When controllers were dropped to obtain a solution, Electrisim shows an alert with the plan that worked and the failed attempts. Treat those voltages and flows as a diagnostic solve, then either relax tap/shunt targets, check data, or run again with controllers off on purpose.

The JSON result may include controller_fallback_warning with the same text (see Advanced notes in exported results).

Large networks (Pandapower)

On a diagram with more than 150 buses, Newton-Raphson does not rebuild the whole pandapower model on every Calculate. The first run builds the model. Later runs on the same diagram update setpoints and continue from the last voltages.

When the diagram is that large and you are on the Pandapower tab with Newton-Raphson selected, the Load Flow dialog notes that the fast Newton kernel is lightsim2grid (Benjamin Donnot). It is used automatically when the network is constant-power, has one slack (one in-service external grid, or one slack generator), and has no FACTS devices, DC elements, or controllable shunts. ZIP loads, several external grids, FACTS, DC, and every algorithm other than Newton-Raphson stay on pandapower’s own Newton method. In the grid-bench comparison, lightsim2grid is the fastest open-source AC Newton solver that still matched the network equations on the large cases.

What the first Calculate does

The browser sends the full diagram. The server builds the pandapower network and solves it. After a successful Newton-Raphson run of an eligible network, the server keeps that model in memory: the connectivity, impedances, and the voltage solution. A few models are kept, and each one is dropped after about five minutes. The cache belongs to the server process that handled the request. On a deployment with several workers, a later Calculate can land on another worker and build the model again.

What the next Calculate does

If you click Calculate again without editing the diagram, only changed active power, reactive power, and voltage setpoints are sent, together with the study options. Newton-Raphson then starts from the previous voltages (init="results") instead of a flat or DC start. The progress log and the browser console say Updating setpoints on the saved model…. The first Calculate of a diagram still says that the model is being saved for the next run.

Changing a load, generator, static generator, wind turbine, storage, shunt, capacitor, or external-grid setpoint is enough to stay on this path. The saved model is discarded and the diagram is built again when any of the following change:

  • Connectivity or impedances (lines, transformers, switches, in-service flags, topology)
  • The algorithm, or the system frequency
  • The Include controller checkboxes
  • Eligibility for the fast kernel: a ZIP load, a second external grid or slack generator, FACTS (SVC, SSC, TCSC, VSC), a DC element, or a controllable shunt
  • Export Pandapower Python Code or Export Pandapower Results is ticked — those exports need the full diagram

A repeat Calculate uses the last voltages even if Initialization is set to Flat or DC. Those choices apply to a full build, including the first Calculate.

Results on a large diagram

From 200 buses upward, Electrisim does not place a result label on every bus and branch. Element symbols are coloured from the solve, and the numbers for the selected element appear in a card at the bottom-right of the window (name, P, and Q, and the other quantities for that element type). Select another element to read its results. Smaller diagrams still use a result box on each element, as described under On-diagram busbar results.

Dialog parameters (OpenDSS)

Parameter Description Type Options Default
Base Frequency System frequency radio 50 Hz, 60 Hz 50 Hz
Solution Mode Type of simulation to perform radio Snapshot (single solution), Daily (24-hour cycle), Yearly (8760 hours), Dutycycle (sub-hourly time-varying), M1/M2/M3 (Monte Carlo / probabilistic) Snapshot
Algorithm Power flow solution algorithm used by OpenDSS radio Normal (fixed-point iteration), Newton (Newton-Raphson) Normal
Load Model How loads are represented in the power flow solution radio Powerflow (standard power balance), Admittance (constant admittance model) Powerflow
Max Iterations Maximum number of iterations for power flow convergence number 1-1000 15
Tolerance Convergence tolerance for the power flow solution number > 0 0.0001
Control Mode How control devices (regulators, capacitor controls) are solved radio Static (iterates controls to steady state), Event (event-driven), Time (time-driven) Static
Export OpenDSS Commands Download the generated OpenDSS command script (.txt) for use outside Electrisim checkbox Yes/No No
Export OpenDSS Results Download the OpenDSS results as text checkbox Yes/No No
OpenDSS snapshot notes (shunts and generator models)

Snapshot OpenDSS load flow uses the same shunt characteristic table and the same single shunt-step controller as pandapower: either discrete voltage control or Line P→shunt step, not both (see Capacitor & Shunt Reactor). After each solve, Electrisim may iterate shunt steps until the voltage or line-P band is met.

Generator models: Static generators and wind turbines are created as OpenDSS Generator Model=1 (constant kW and kvar). Synchronous / voltage-controlled generators use Model=3 (constant kW / constant kV), matching pandapower gen as a PV bus. Do not expect a wind turbine to hold 1.0 pu at its terminal in OpenDSS — that would be Model=3.

If the requested algorithm does not produce a usable solution, OpenDSS retries a short sequence of snapshot plans (more iterations, Newton, and a wider generator Vminpu so P is not converted to constant-Z). If no plan converges, the error message suggests trying Algorithm=Newton in the dialog or comparing with pandapower on the same case.

Output results

Values are written onto the diagram. The table below lists the quantities for export and for the health dashboard.

Tap / shunt control export and API fields

When the matching Include controller checkbox is on, transformer result labels show the final tap position (and initial→final if it moved). Exported results include a Tap (control) column and a DISCRETE TAP CONTROL (summary) section; the JSON API returns tap_control_results and, when used, shunt_control_results. There is no separate results dialog only for tap or shunt control.

Output Category Parameters Units
Buses Voltage magnitude (pu and kV), voltage angle; net active and reactive power (P, Q), power factor, Q/P — see Busbar result boxes pu, kV, degrees, MW, Mvar, -, -
External Grids Active power (P), Reactive power (Q), Power factor (PF), Q/P ratio MW, Mvar, -, -
Lines P_from, Q_from, I_from, P_to, Q_to, I_to, Loading percentage MW, Mvar, kA, MW, Mvar, kA, %
Transformers P_HV, Q_HV, P_LV, Q_LV, I_HV, I_LV, Loading percentage, Losses; plus tap_pos after control (and initial→final) when DiscreteTapControl was active MW, Mvar, MW, Mvar, kA, kA, %, MW; tap steps (unitless)
Loads P, Q, S, I, Power factor MW, Mvar, MVA, kA, -
Generators P, Q, S, I, Power factor MW, Mvar, MVA, kA, -
Storage P, Q, S, I, SOC (if applicable) MW, Mvar, MVA, kA, %

On-diagram busbar results

After a successful pandapower load flow, each busbar result box shows voltage (U[pu], U[kV], U[deg]) and the net power at that bus (P[MW], Q[MVar], PF, Q/P). On a diagram with 200 or more buses those labels are replaced by symbol colours and a selection card; see Large networks.

Sign convention (same as pandapower res_bus): negative P means net generation at the bus (power injected by generators or discharging Storage / BESS); positive P means net load (consumption, including charging storage).

What P on the busbar is: the net injection of devices connected to that bus — loads, generators, static generators, storage, shunts — including units behind a closed bus–switch. Several machines on the same busbar are summed once. They are not added again from the transformer or line that carries the same power away.

Example — two BESS on one LV busbar:

  • BESS1: P = −1.750 MW (discharging)
  • BESS2: P = −1.750 MW (discharging)
  • Busbar P = −3.500 MW (not −7.000 MW)

Each storage result box still shows 1.750 MW. The upstream transformer or line should carry about 3.5 MW (plus losses). If a busbar label ever looks like twice the connected generation, compare it with the individual device boxes and the upstream branch — the branch and the device boxes are the solved load flow; the busbar P is only an aggregation of those injections.

On a pass-through bus with no local generation or load, the box shows through-power on the incident lines or transformers so the label is not a bare zero. Slack / external-grid buses show the net injection at the reference bus (consistent with the External Grid box, opposite sign).

Related: Bus, Storage, BESS AC Block.

Post–load-flow results and tools

The features below are part of the Load Flow workflow. They do not run a separate simulation; they interpret, visualise, compare, or export the output of the most recent successful load flow solve (Pandapower or OpenDSS).

Network Health Dashboard

After a successful load flow run (Pandapower or OpenDSS), Electrisim opens the Network Health Dashboard: a floating, draggable summary panel computed entirely in the browser from the simulation JSON. It complements the usual on-diagram result boxes by aggregating KPIs at system level.

What you see:

  • Health score (0–100) — composite status from convergence-quality signals, voltage band compliance, thermal headroom on lines/transformers, and relative losses versus generation.
  • KPI cards — total generation and total load (with hover tooltips listing how each category contributed: synchronous and static generators, asymmetric static generators, PV systems where applicable, storage charge/discharge, and external-grid import/export split).
  • Top loaded equipment — horizontal bars for the five highest line or transformer loadings; click a row to scroll to and select that element on the schematic.
  • Voltage profile — small histogram of bus voltages (about 0.85–1.15 pu) with band colouring consistent with diagram colour rules.
  • Critical issues — ranked list of overloads and bus voltages outside normal bands; click to focus the corresponding shape on the canvas.
  • Highlight Hot Spots — briefly flashes each issue location in sequence.
  • Copy Summary — copies a plain-text snapshot of the headline numbers for email or reporting.
  • Save as Baseline — stores the latest run snapshot and pins it so later runs can be compared.
  • Compare to Baseline — opens the Scenario Compare panel (see below) against the pinned baseline.
  • Line current vs km… — opens a characteristic plot of branch current magnitude (or signed scalar) versus cumulative distance along a simple chain of AC lines; see Line current vs distance.

Closing the panel or running another simulation replaces it automatically when the next run completes. For auditing, expand the collapsible group [Network Health] … in the browser developer console after a run to see the same generation and load breakdowns logged as structured lists.

Line current vs distance along a path

After a successful pandapower or OpenDSS load flow, the Network Health Dashboard includes Line current vs km…. It builds a staircase chart of current (kA) against cumulative route length (km) for a simple path made only of AC Line segments: consecutive lines with no branching (every intermediate bus along the traced set must have degree two in terms of those selected edges). Branching paths, meshes, DC lines, and transformers in series are outside this tool's intended use; for mixed equipment, inspect per-element results on the diagram instead.

How to use it:

  1. Run load flow and open the Network Health Dashboard when it appears.
  2. On the canvas, select the line edges that form your route (multi-select).
  3. Click Line current vs km…. Electrisim orders segments by connectivity, uses each line's length_km from the diagram, and takes branch currents from the solver output (i_from_ka / i_to_ka), matching diagram orientation to from/to.

What you get: a coloured staircase plot with segment bands, junction markers at cumulative kilometres, a legend, and an HTML table (segment length, km from/to, current at each end, and change along the segment). You can switch between absolute |I| and a signed scalar along the path.

Scale and spikes: optional Amplify plateau relaxes the vertical axis when a single segment would otherwise flatten the rest of the profile (one dominant outlier is dropped only for axis limits). Values that fall outside the displayed Y range are still listed in the table and shown on the chart as orange triangle markers at the correct kilometre with a short explanation in the tooltip.

Prerequisite: results for the latest run must be available in the session (normally automatic after load flow).

Engineering Report (PDF)

After a successful load flow (Pandapower or OpenDSS), you can download a multi-page PDF built in the browser from the same result data the Network Health Dashboard uses. The report is for handover: cover page with project fields, executive summary, single-line diagram pages (overview plus zoomed detail tiles on large schematics), voltage and loading sections, issues, and tables by element type.

How to run it:

  • In the Load Flow dialog, tick Export PDF Engineering Report (Pandapower or OpenDSS tab) before you run; the file is offered when the run finishes.
  • Or open the Network Health Dashboard after a run and click Export Report.
  • Project name, engineer, company, and notes are stored in the browser for the next export if you choose to remember them.

Scope: load-flow results only. For short-circuit studies, use the separate Short-Circuit Engineering Report (PDF) from the Short Circuit dialog or dashboard. OPF and other study types are not covered by either PDF template.

Scenario Compare

After two load flow solves on the same project (same engine: Pandapower with Pandapower, or OpenDSS with OpenDSS), Electrisim can compare the current result against a pinned baseline without juggling two tabs or spreadsheets. Comparison is computed in your browser using the same KPI logic as the Network Health Dashboard.

How it works:

  • Each successful load flow saves a lightweight snapshot locally (typically the last ten non-baseline runs are kept).
  • Open the dashboard after the run you want as reference and click Save as Baseline; that pins one snapshot.
  • Change the model, run load flow again, open the dashboard, and click Compare to Baseline. You get KPI deltas (generation, load, losses, score, violations, voltage extremes, max loading), top bus voltage movers, top branch loading movers, band migrations (good to warn or overload style changes), and a list of elements that appear only in one run.
  • Highlight Differences places small coloured labels on the live single-line diagram next to matched elements so you see where magnitude or status shifted; clear them from the same panel.
  • With a baseline pinned, an extra Comparison vs Baseline page can be appended to the Engineering Report (PDF) when you export.

Limits: Baselines live in this browser profile only — not on the cloud and not shared with other users or devices. Comparing Pandapower output to OpenDSS output in one step is outside the intended scope.

Algorithm Details

Newton-Raphson Method (Default): This is the most widely used power flow algorithm, providing fast convergence for well-conditioned networks. It linearizes the power balance equations using the Jacobian matrix and iteratively solves for voltage corrections. On diagrams with more than 150 buses, an eligible network uses the lightsim2grid Newton kernel and later Calculates reuse the saved model — see Large networks.

Other Algorithms:

  • Iwamoto: Enhanced Newton-Raphson with improved convergence for ill-conditioned systems
  • Backward Forward Sweep: Suitable for radial distribution networks
  • Gauss-Seidel: Simpler iterative method, slower convergence but more robust for some cases
  • FDBX/FDXB: Fast decoupled variants for transmission networks

Limitations and Considerations

Important Notes:

  • Load flow assumes balanced three-phase conditions (single-phase equivalent)
  • The network must have at least one external grid (slack bus) to provide power balance
  • Convergence may fail if the network is too heavily loaded or has numerical issues
  • Some algorithms may not be suitable for all network topologies (e.g., BFSW for radial networks only)
  • A saved large-network model lives in one server process for about five minutes. Editing the diagram, leaving Newton-Raphson, or adding ZIP loads, FACTS, DC, or another slack builds the model again. See Large networks.
  • On-diagram busbar P/Q is the net injection of devices on that bus (several BESS or generators are summed once). It is not a second load-flow solve; upstream transformer and line flows are the calculated branch power. See Busbar result boxes.
  • The Network Health Dashboard is a read-only interpretation of the solver output it receives; totals follow the JSON returned by the backend (including asymmetric static generators, storages and PV elements when present).
  • The Engineering Report PDF uses the same KPI logic as the dashboard and the same diagram snapshot as the editor; it is generated client-side and depends on a normal browser session (cached script and network access for the PDF libraries).
  • Scenario Compare snapshots and pinned baselines are stored locally (IndexedDB with a fallback if storage is unavailable); clearing site data removes them.

Technical References

Based on: pandapower Power Flow Documentation and OpenDSS.

Algorithm Type: Iterative solution of power balance equations using various numerical methods.

Documentation References: 📘 pandapower Power Flow 📘 pandapower runpp() 📗 OpenDSS Power Flow 📗 lightsim2grid 📗 grid-bench AC load-flow comparison

Controllers

pandapower OpenDSS

Note

There is no separate Simulate → Controller Simulation command anymore. Enable tap and shunt control on the equipment, then run Load Flow.

Discrete transformer tap and shunt step controls are exercised by running Load Flow:

  • Pandapower: enable the matching Include controller checkbox (two-winding tap, three-winding tap, and/or shunt), together with the settings on each transformer or shunt.
  • OpenDSS snapshot: the shunt-step controller enabled on the reactor (discrete voltage control or Line P→shunt step, not both) runs from the shunt dialog (no extra Include-controller tick). Transformer DiscreteTapControl remains pandapower-only.

Grid Code Compliance (P-Q) does not use these Load Flow checkboxes. Enable two-winding / three-winding tap, shunt reactor control, and shunt on/off in that study’s own dialog.

Technical reference: pandapower Controller / run_control.

If you bookmarked this page previously as “Controller Simulation,” use Load Flow with “Include controller” instead.

Monte Carlo Load Flow (OpenDSS)

OpenDSS

Monte Carlo load flow samples load variation over many trials and reports bus voltage and line loading statistics (min, mean, max, and percentiles).

Where to find it

Open the Load Flow dialog, OpenDSS tab, and set Solution Mode to M1, M2, or M3 — or use the dedicated Monte Carlo results path after that run.

When to use

  • Voltage and loading risk when load is uncertain
  • A distribution of results instead of a single snapshot
Modes
  • M1 — Monte Carlo with loadshapes (Gaussian or Uniform multipliers).
  • M2 — Daily / yearly style sampling.
  • M3 — Monte Carlo at a selected hour.

How to run

  1. Build a network suitable for OpenDSS load flow (include loadshapes for Gaussian M1 where required by OpenDSS).
  2. Open Simulate → OpenDSS Load Flow (or the OpenDSS tab of Load Flow).
  3. Set Solution Mode to M1, M2, or M3; choose sample Number, Random (Uniform / Gaussian), and hour for M3.
  4. Review the Monte Carlo results dialog: bus V percentiles, line loading stats, and summary convergence count.

Wind Turbines contribute with their curve-derived p_mw (and optional controller Pref) on each sampled solve the same way as in snapshot load flow.

Last updated: October 2026

Electrisim on YouTube · Frontend on GitHub