Electrisim documentation

Electrisim is a free, open-source web app for power system analysis. You draw a single-line diagram in the browser, set parameters in dialogs, and run studies from the Simulate menu. Nothing needs to be installed, and you do not need to write scripts to get results on the diagram.

This page is the in-app reference. Start with First Steps if you are new, then pick a study under Simulation. Parameter tables for each network element are in Elements. Downloadable example networks and validation articles are under Resources.

Tip

Prefer a video walkthrough? See the Tutorials page. Technical solver options that Electrisim does not expose are in the engine documentation at the end of this page.

First Steps

Build a tiny network, run load flow, and read voltages on the diagram. That is the loop you will reuse for every other study.

  1. Open the app — Go to app.electrisim.com and create or open a project.
  2. Place two buses — From the palette, drop two Bus elements. Set the rated voltage (vn_kv) on each, for example 20 kV.
  3. Add a grid connection — Connect an External Grid to the first bus. This is the slack / voltage source.
  4. Add a load — Connect a Load to the second bus and enter P and Q (MW / Mvar).
  5. Draw a line — Draw a Line between the two buses (an edge, not a palette shape). Check length and impedance, or leave the defaults for a first test.
  6. Run load flow — Click Simulate → Load Flow. Leave the pandapower tab and defaults, then click Run.
  7. Read the result — Voltage, angle, and net P/Q appear on the buses (see busbar result boxes). Line loading appears on the line. The Network Health Dashboard summarises the same solve.
Where to find it

Every study starts from the toolbar Simulate button. Choose the analysis, set a few options, click Run. Results paint onto the diagram; most studies also open a results dialog.

Where to go next

Step-by-step videos and worked examples: Tutorials.

Simulation

Click Simulate in the toolbar, pick a study, set the dialog options, and click Run. Results appear on the diagram and, for most studies, in a results window.

Start with Load Flow unless you already know you need a specialist study. After a successful load flow you also get the Network Health Dashboard, line current vs distance, Engineering Report (PDF), and Scenario Compare — these reuse the same solve; they are not extra analysis types.

Which engine?

Load Flow and Short Circuit dialogs have Pandapower and OpenDSS tabs. Use pandapower for balanced transmission-style models and IEC 60909, or tick ANSI/IEEE C37 (beta) on the Pandapower Short Circuit tab for North American duties. Use OpenDSS for unbalanced feeders, harmonics, Monte Carlo, and DG screening. Transient Stability and Eigenvalue Analysis use ANDES only.

Choose a study

Engine coverage (pandapower, OpenDSS, ANDES)
  • pandapower — Power flow, OPF, short-circuit (IEC 60909 and ANSI/IEEE C37 beta), arc flash (IEEE 1584), motor starting (steady-state), protection coordination, contingency analysis, tap/shunt controllers (via Load Flow Include controller), time-series, economic analysis, grid-code P-Q and V-Q studies, BESS preliminary design, and battery sizing. See pandapower documentation.
  • OpenDSS — Unbalanced multi-phase power flow (Snapshot, Daily, Yearly, Dutycycle, Monte Carlo M1/M2/M3), InvControl on PV/Storage, Controls (RegControl / CapControl / StorageController), Wind Turbine Pref, DG interconnection screening, BESS Dispatch Reversal (OpenDSS, optionally with OpenDER), fault studies, and harmonic analysis. See OpenDSS documentation.
  • ANDES — Transient stability (time-domain), eigenvalue analysis (small-signal), and dynamic motor starting. See Transient Stability and Eigenvalue Analysis.

Park Controller is pandapower-only and is not gated by the tap/shunt Include controller checkboxes. Harmonic analysis, Monte Carlo, InvControl, RegControl/CapControl/StorageController, DG Interconnection Screening, and BESS Dispatch Reversal use OpenDSS. OPF, protection, contingency, time-series, economic analysis, Grid Code Compliance (P-Q), Grid Code Compliance (V-Q), BESS Preliminary Design, and Battery Sizing use pandapower only.

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. 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 and Line P→shunt step). 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) and Line P→shunt step lookup from the shunt Control tab. Both shunt modes require this checkbox; they no longer run 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).

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, discrete voltage control, and Line P→shunt step settings as pandapower (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).

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.

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)
  • 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

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: discrete shunt voltage control and Line P→shunt step run from the same 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.

Short Circuit

pandapower OpenDSS ANSI/IEEE C37

Short Circuit calculates fault currents on the network so you can size breakers, check withstand, and feed protection studies. Two engine tabs are available and are not interchangeable: Pandapower can run IEC 60909 or ANSI/IEEE C37 (beta) (tick boxes on that tab); OpenDSS runs a native Thévenin fault study.

Where to find it

Simulate → Short Circuit. Pick Pandapower (then tick IEC 60909 or ANSI/IEEE C37) or OpenDSS before you run.

When to use

  • Breaker and fuse interrupting ratings
  • Relay pickup and protection coordination
  • Grid-code style IEC 60909 studies (Pandapower tab, IEC 60909 tick)
  • North American / Canadian projects requiring ANSI/IEEE C37 duties (Pandapower tab, ANSI/IEEE C37 tick — currently beta; default 60 Hz, prefault 1.0 pu)

How to run

  1. Confirm the diagram already solves in Load Flow with the same engine you will use for faults.
  2. Click Simulate → Short Circuit and choose the engine tab. On Pandapower, tick IEC 60909 or ANSI/IEEE C37 (beta).
  3. Set fault type (3-phase, 2-phase, or 1-phase), case (maximum or minimum), and Fault location (All busbars, or User Selection of one or more busbars). For IEC 60909 single-phase minimum, fill the External Grid Short Circuit tab, including min zero-sequence ratios.
  4. Read currents on the diagram. A red thunder mark sits on each faulted busbar (all buses, or the User Selection). It is removed when you run the next study of any type. Pandapower writes buses, lines, transformers, and the external grid. OpenDSS writes bus currents only; line, transformer, external-grid, and wind-turbine result boxes are marked as not provided. The Short-Circuit Dashboard opens automatically after a successful run.
  5. Optional: tick Export Pandapower Python Code (IEC Pandapower), Export OpenDSS Commands (OpenDSS tab), or Export PDF Engineering Report before you run.
  6. Use those values for Arc Flash if you need incident energy next.
Do not mix methods with equipment ratings

IEC 60909 (Pandapower) uses the IEC voltage factor and correction factors. ANSI/IEEE C37 (beta) uses prefault voltage (no IEC c-factor) and C37.010/C37.13/UL 489/C37.013 multiplying factors. OpenDSS is a generic Thévenin fault study. Compare numbers only within the same method, and size breakers to the same standard as the calculation.

How the calculation is set up

The study uses sequence impedances, applies a fault impedance at the chosen location, builds a Thévenin equivalent, computes the fault current for the selected fault type, and distributes branch contributions through the network.

  • Pandapower — IEC 60909 — IEC 60909 via pandapower short-circuit calculation. Use for balanced three-phase networks and grid-code style studies.
  • Pandapower — ANSI/IEEE C37 (beta) — Three networks (1/2-cycle, interrupting, 30-cycle) with IEEE C37.010-style multiplying factors. Does not call pandapower IEC calc_sc. Outputs I1/2 sym, I1/2 peak, Iint, I30, X/R per bus, plus line and transformer currents (also written onto diagram result boxes), and breaker duty checks when Switch ratings are entered. Verify against utility requirements before using results for equipment ratings.
  • OpenDSS tab — native OpenDSS FaultStudy. Reports symmetrical, peak, and thermal currents per bus only. Assumptions differ from IEC 60909; see Pandapower vs OpenDSS.

ANSI/IEEE C37 (North America / Canada) — beta

Beta

ANSI/IEEE C37 short circuit is in beta. Use results for engineering review. Verify against utility or consultant practice before applying them to equipment ratings.

On the Pandapower tab, tick ANSI/IEEE C37 when the project or utility requires ANSI/IEEE C37 short-circuit duties (typical in Canada and the United States). This is not IEC 60909 with a different label.

The study follows the North American three-network method used in IEEE C37.010 (and described in IEEE Std 141, the Red Book). Electrisim builds three separate impedance networks from the same diagram:

  1. First-cycle (½-cycle) — subtransient machine reactances. Momentary / close-and-latch basis.
  2. Interrupting — contact parting time (default 3 cycles). Transient reactances; motors reduced or removed per ANSI practice.
  3. 30-cycle — steady-state network (induction motors out).

Prefault voltage is applied directly (default 1.00 pu). There is no IEC voltage factor c and no IEC KG / KT correction factors. Asymmetry uses the calculated fault-point X/R: first-cycle peak from a fully offset wave, interrupting duty from the remaining DC component at contact parting (compared with the C37.010 X/R = 17 test circuit for symmetrically rated HV breakers), and extra first-cycle derating for LV devices when system X/R exceeds the C37.13 (6.6) or UL 489 (4.9) test circuit.

Set generator ANSI machine type (turbo, hydro, etc.) and Switch interrupting / momentary ratings on the Short Circuit tab for duty comparison. Device class can be auto (from voltage) or C37.010 / C37.13 / UL 489 / C37.013.

IEC 60909 vs ANSI/IEEE C37

IEC 60909ANSI/IEEE C37 (beta)
VoltageVoltage factor c (e.g. 1.1)Prefault pu (typically 1.0)
MachinesIEC correction factorsSeparate ½-cycle / interrupting / 30-cycle networks
Peak / interruptingκ, ip, ibX/R multiplying factors (C37.010 / C37.13 / UL 489)
Typical useEurope, IEC-rated gearCanada / US, ANSI-rated gear

ANSI results

Currents are written to diagram result boxes on buses, lines, and transformers, and listed in the ANSI results dialog (and optional TXT export).

ResultMeaning
I1/2 symFirst-cycle symmetrical RMS (subtransient network)
I1/2 peakFirst-cycle peak (momentary / close-and-latch duty basis)
IintInterrupting duty at contact parting time (C37.010)
I3030-cycle steady-state symmetrical current
X/RFault-point X/R for multiplying-factor application
Line I from / I toWorst-case branch end currents over the chosen fault locations (all busbars, or User Selection). 3-phase and line-to-line only.
Transformer I HV / I LVWorst-case HV and LV side currents
Device dutyPass/fail against Switch interrupting and momentary ratings, when entered

ANSI input parameters

Parameter Description Default
Fault 3-phase, 2-phase, or 1-phase. Line and transformer branch currents are reported for 3-phase and 2-phase faults (positive-sequence network). Single-phase branch flows are omitted because the zero-sequence branch model is approximate. Three Phase
Fault location All busbars (default), or User Selection of one or more busbars. Tick busbars in the dialog, or select them on the diagram first. Branch currents then use only those fault locations. All busbars
System frequency Used for DC decay and contact-parting time 60 Hz
Prefault voltage Driving voltage in pu (no IEC c-factor) 1.00 pu
Contact parting time Breaker contact parting in cycles (interrupting network) 3 cycles
Fault R / X Optional fault impedance in ohm 0

ANSI limitations (beta): do not mix ANSI currents with IEC-rated equipment. Single-phase line/transformer currents are not published. Arc flash still uses the IEC 60909 path. Spot-check a few duties against your C37.010 tables or a known hand calc before relying on ratings.

Fault types

Electrisim supports three types of short circuit faults:

  • Three-Phase Fault (3ph): Symmetrical fault affecting all three phases. Typically produces the highest fault current. Used for symmetrical interrupting capacity rating.
  • Two-Phase Fault (2ph): Fault between two phases. Produces lower fault current than three-phase. Used for phase-to-phase protection.
  • Single-Phase Fault (1ph): Fault between one phase and neutral/ground. Includes zero-sequence impedance of the network and of the External Grid. Critical for ground-fault protection and neutral sizing. IEC 60909 maximum uses r0x0_max / x0x_max; minimum uses r0x0_min / x0x_min.

Fault location is independent of fault type. All busbars (default) applies the chosen fault at every bus. User Selection applies it only at the busbars you tick in the dialog (busbars selected on the diagram are pre-ticked). Unselected bus result boxes show “Fault not applied”. A red thunder sign marks each faulted bus on the diagram until the next simulation.

Input Parameters (IEC 60909)

These fields appear when IEC 60909 is ticked on the Pandapower tab. For ANSI parameters see ANSI/IEEE C37 above.

Parameter Description Type Options/Value Range Default
Fault Type of short circuit fault radio Three Phase (3ph), Two Phase (2ph), Single Phase (1ph) Three Phase
Fault location Where the fault is applied. All busbars computes Ikss at every bus. User Selection limits the study to the ticked busbars (pre-ticked from the diagram selection). Unselected bus result boxes show “Fault not applied”. radio All busbars, User Selection All busbars
Case Fault current calculation case. IEC 60909 maximum uses External Grid max short-circuit data; minimum uses min data. Single-phase minimum also needs r0x0_min and x0x_min (see External Grid). radio Maximum (max), Minimum (min) Maximum
Voltage Tolerance in LV Grids Voltage tolerance factor for low voltage networks radio 6%, 10% 6%
Topology Network topology classification radio Auto, Radial, Meshed Auto
Failure Clearing Time (s) Fault duration for thermal rating (ith calculation) number > 0 1.0
Fault Resistance (Ohm) Resistance at fault location (for arc fault modeling) number ≥ 0 0
Fault Reactance (Ohm) Reactance at fault location number ≥ 0 0
Inverse Should Be Used Instead of LU Factorization Solution method preference radio True, False True
Export Pandapower Python Code Download generated Python that rebuilds the network and runs pandapower.shortcircuit.calc_sc (IEC 60909 only) checkbox Yes/No No
Export Pandapower Results Download bus and branch short-circuit results as a .txt file checkbox Yes/No No
Export PDF Engineering Report Multi-page short-circuit PDF (see Short-Circuit Engineering Report) checkbox Yes/No No

Short-Circuit Dashboard

After a successful short-circuit run (Pandapower IEC, ANSI/IEEE C37, or OpenDSS), Electrisim opens the Short-Circuit Dashboard: the same floating panel pattern as the load-flow Network Health Dashboard, but KPIs use fault currents (Ikss, Ip, Ith, X/R) instead of voltage and loading.

What you see: study score (0–100), max/min Ikss, peak and thermal currents, top fault-level buses and branches (click to focus on the SLD), Ikss histogram, critical issues (missing data, high fault levels, ANSI device duty fails), Highlight Hot Spots, Copy Summary, and Export Report for the short-circuit PDF.

Scenario Compare and Line current vs km remain load-flow-only tools.

Short-Circuit Engineering Report (PDF)

Tick Export PDF Engineering Report in the Short Circuit dialog (any engine tab), or click Export Report on the Short-Circuit Dashboard after a run. The PDF includes cover metadata, executive summary with fault-current KPIs, single-line diagram pages, bus and branch tables, ANSI device duties when applicable, and an issues list.

Calculation Cases (IEC 60909)

According to DIN/IEC EN 60909, different calculation cases are used:

  • Maximum Case (Ik"): Highest fault current (typically for breaker sizing). Assumes maximum generation, minimum impedances, voltage = 1.1 pu (cmax). External Grid uses s_sc_max_mva, rx_max, and for 1-phase faults r0x0_max / x0x_max.
  • Minimum Case (Ik'): Lowest fault current (typically for protection coordination). Assumes minimum generation, maximum impedances, voltage = 0.9 pu (cmin). External Grid uses s_sc_min_mva, rx_min, and for 1-phase faults r0x0_min / x0x_min.

Single-phase minimum (IEC 60909): pandapower builds the external-grid zero-sequence impedance from r0x0_min and x0x_min. Set them on the External Grid dialog Short Circuit tab (Min R0/X0 Ratio, Min X0/X Ratio). If they were never stored on an older diagram, Electrisim copies the matching maximum ratios so the study can still run. Typical values when the utility does not give separate min data: R0/X0 ≈ 0.1, X0/X ≈ 1.0. Also set s_sc_min_mva > 0. See External Grid.

Output Results (IEC 60909)

The IEC 60909 analysis provides detailed fault current information:

Output Category Parameters Description Units
Fault Location Bus name, Fault type Location and type of applied fault -
Initial Symmetrical Current Ik" (initial symmetrical short-circuit current) Fault current at t=0 (symmetrical component) kA
Peak Current ip (peak short-circuit current) Maximum instantaneous fault current including DC offset kA
Breaking Current Ib (breaking current) Fault current at breaker opening time (symmetrical) kA
Steady-State Current Ik (steady-state short-circuit current) Fault current after transients decay kA
Thermal Current Ith (thermal equivalent current) Equivalent RMS current for thermal rating based on fault duration kA
Branch Contributions I_from, I_to for each branch Fault current contribution from each line/transformer kA
Generator Contributions I_gen for each generator Fault current contribution from each generator kA
Voltage Profile V_fault at all buses Voltage magnitude at all buses during fault kV or pu

Algorithm Details (IEC 60909)

The IEC path follows DIN/IEC EN 60909:

  • Voltage Factor (c): cmax = 1.1 for maximum case, cmin = 0.9 for minimum case (low voltage)
  • Impedance Correction: Generator and transformer impedances are corrected according to the standard
  • Far-from-Generator Approximation: Used when fault is far from generators (symmetrical current decays quickly)
  • Near-to-Generator: Special handling when fault is close to generators (asynchronous contribution)
  • Solution Method: Matrix inversion or LU factorization of network admittance matrix

Limitations and Considerations

Important Notes:

  • Calculations assume balanced pre-fault conditions and symmetrical source impedances
  • Fault resistance/reactance can be specified but arc fault modeling may require additional considerations
  • Results are based on steady-state fault analysis - dynamic transients are approximated
  • Motor contributions to fault current may require special modeling
  • Grounding system impedance significantly affects single-phase fault currents. For IEC 60909 1-phase faults, the External Grid zero-sequence ratios (r0x0_max / x0x_max or r0x0_min / x0x_min) must be set for the selected case.
  • Results are valid for the specified fault location - multiple fault locations require separate calculations
  • Protection device characteristics (opening time, arcing) are not modeled in the base calculation

Short Circuit based on OpenDSS

In addition to Pandapower IEC 60909 and ANSI/IEEE C37 (beta), Electrisim offers short circuit calculation based on OpenDSS. In the Short Circuit dialog, select the OpenDSS tab to run a conventional fault study using the Open-Source Distribution System Simulator.

OpenDSS fault study (Solve Mode=FaultStudy) computes for every bus:

  • Initial symmetrical short-circuit current (I''k, ikss) in kA
  • Peak short-circuit current (ip, ip) in kA — Electrisim reports ip = 1.8 · √2 · ikss (fixed κ = 1.8), not the IEC κ(R/X) peak
  • Thermal short-circuit current (Ith, ith) in kA — copied from ikss (OpenDSS does not compute the IEC 1 s thermal equivalent)
  • Positive-sequence short-circuit resistance (Rk, rk_ohm) and reactance (Xk, xk_ohm) in ohms from Zsc1

Fault type (e.g. 3-phase), Fault location (All busbars or User Selection), and frequency can be set in the OpenDSS tab. Results are shown on the diagram at each faulted busbar. Line, transformer, external-grid, and wind-turbine result boxes are updated to state that OpenDSS does not provide short-circuit currents for those elements (FaultStudy is bus Isc/Zsc only). Optional checkboxes: Export OpenDSS Commands (replay script .txt), Export OpenDSS Results (tabular .txt), and Export PDF Engineering Report (see Short-Circuit Engineering Report). This option uses the same network model as OpenDSS load flow (buses, lines, loads, generators, external grid).

Pandapower vs OpenDSS short-circuit results

The two engines can be run on the same diagram and will usually not return the same kA. That is expected: they implement different methods, not two numerical solvers of IEC 60909.

Pandapower (IEC 60909)OpenDSS FaultStudy
Standard / methodIEC 60909 equivalent voltage source at the faultY-matrix study: Isc = Ysc · Voc from a snapshot
Driving voltageVoltage factor c (typically cmax = 1.10 on MV)Pre-fault bus voltage from the snapshot (~1.0 pu)
TransformersNameplate vk with IEC KT correctionNameplate XHL (vk) without IEC KT
Wind turbines / static generatorsIEC current sources with k = 1.1 (≈ k · Sn / (√3 Un) per machine)OpenDSS Generator behind Xdpp (default 0.2 pu), i.e. a synchronous-machine subtransient model — much larger infeed than IEC type-4. Machine result boxes are not filled with a separate Ikss
Shunt capacitorsTypically neglected for maximum IkssIncluded in the nodal Y matrix
Peak current ipIEC κ from R/X (method C)Fixed κ = 1.8 in Electrisim
Thermal IthIEC equivalent for the clearing time tkSet equal to ikss
Where results appearBuses, lines, transformers, external gridBuses only. Line, transformer, external-grid, and wind-turbine boxes state that OpenDSS does not provide those currents

Typical pattern on a wind-farm feeder: OpenDSS Ikss is a few percent higher on MV/LV turbine buses (machine Xdpp infeed) and about 1/cmax lower on a capacitor LV bus with no turbine (no IEC voltage factor). Peak currents differ more because of the κ formula.

Which results to use

For breaker ratings, grid-code IEC studies, and comparison with utility IEC figures, use Pandapower IEC 60909. For ANSI-rated gear, use ANSI/IEEE C37. Treat OpenDSS FaultStudy as an IEEE-style Y-bus check, not as IEC Ikss.

OpenDSS references: Fault Studies, Fault Study Mode, Bus.Isc().

Technical References

Based on: pandapower Short-Circuit and DIN/IEC EN 60909 (Pandapower IEC); IEEE C37.010 / C37.13 / UL 489 / C37.013 and IEEE Std 141 three-network method (Pandapower ANSI/IEEE C37, beta); OpenDSS Fault Studies (OpenDSS).

Algorithm Type: Pandapower IEC: symmetrical components with impedance-based fault calculation following IEC 60909. Pandapower ANSI: three impedance networks plus X/R multiplying factors (does not call IEC calc_sc). OpenDSS: conventional fault study with Thévenin equivalent and open-circuit voltage per bus.

Documentation References: 📘 pandapower Short-Circuit 📘 Running a Short-Circuit Calculation 📗 OpenDSS Fault Studies

Standards: IEC 60909: Short-circuit currents in three-phase a.c. systems (Pandapower IEC); IEEE C37.010, IEEE C37.13, UL 489, IEEE C37.013, IEEE Std 141 (Pandapower ANSI, beta).

Arc Flash Analysis (IEEE 1584)

pandapower

Arc Flash estimates thermal hazard at each bus: Electrisim runs a 3-phase maximum short-circuit (IEC 60909), then IEEE 1584-2018 for arcing current, incident energy, arc-flash boundary, and an NFPA 70E–style PPE category. Results are painted on the diagram.

Where to find it

Simulate → Arc Flash (IEEE 1584). Requires an active subscription.

When to use

  • PPE selection from incident energy
  • Arc-flash boundary for labelling and approach
  • Comparing LV feeder hazard (for example MCC vs a remote panel)

How to run

  1. Build the network and confirm short-circuit data (source impedances, transformer ratings) is filled in.
  2. Click Simulate → Arc Flash (IEEE 1584).
  3. Set working distance, electrode configuration, and clearing times, then run.
  4. Read incident energy, AFB, and PPE category on each applicable bus.

How it is calculated

  1. Short circuit: 3-phase max fault currents (Ikss) are calculated for all buses.
  2. Arcing current (Iarc): IEEE 1584-2018 converts bolted fault current to arcing current using electrode configuration, gap, and voltage.
  3. Reduced arcing current: Iarc-min is evaluated (variation factor); both clearing times are considered and the worst-case energy is kept.
  4. Incident energy (IE): Energy at the working distance in cal/cm², including enclosure correction factor where applicable.
  5. Arc-flash boundary (AFB): Distance where IE equals 1.2 cal/cm².
  6. PPE category: Mapped from IE using NFPA 70E thresholds (Cat 0–4 / Dangerous).

Voltage range and methods

  • 208 V – 15 kV: IEEE 1584-2018 empirical model (verified open-source coefficients via arcflash-calc).
  • Above 15 kV: Ralph Lee method; the result box is tagged method: RalphLee so HV estimates are not confused with IEEE 1584 LV/MV results.
  • Below 0.208 kV: Bus is skipped as outside the IEEE 1584 applicability range.

Input Parameters

Parameter Description Type Options / typical values Default
Electrode Configuration IEEE 1584 electrode geometry at the equipment radio VCB, VCBB, HCB, VOA, HOA VCB
Working Distance (mm) Distance from arc to worker (face/chest) number ≥ 305 (typical LV 455 mm, MV 610 mm) 455
Conductor Gap (mm) Gap between electrodes number Typical LV ~25 mm; MV larger 25
Enclosure Height / Width / Depth (mm) Enclosure size for correction factor (VCB, VCBB, HCB). Ignored conceptually for open-air VOA/HOA (CF = 1) number Typical 508 × 508 × 508 508
Clearing Time at Iarc (s) Protective-device clearing time at nominal arcing current number > 0 0.2
Clearing Time at Iarc-min (s) Clearing time at reduced arcing current (often longer on inverse curves) number > 0 0.2

Electrode configurations

  • VCB — Vertical conductors in a metal box (typical switchgear / MCC)
  • VCBB — Vertical conductors terminated in an insulating barrier inside a box
  • HCB — Horizontal conductors in a metal box (often higher IE)
  • VOA — Vertical conductors in open air
  • HOA — Horizontal conductors in open air

Output Results

Each bus result box typically shows:

Output Description Units
IE Worst-case incident energy at the working distance cal/cm²
AFB Arc-flash boundary (IE = 1.2 cal/cm²) mm
PPE Category from IE (<1.2 → 0; 1.2–4 → 1; 4–8 → 2; 8–25 → 3; 25–40 → 4; ≥40 → Dangerous) —
Ia Arcing current used for the reported case kA
Ikss Bolted initial symmetrical short-circuit current kA
method IEEE1584-2018 or RalphLee (shown when not IEEE 1584) —

Demo model

Import the industrial example arc_flash_industrial_demo.py (File → Import) to see a clear LV gradient: short cables (MCC Near) show higher IE / PPE than long feeders (Panel Far). Buses at 20 kV are labeled with the Ralph Lee method.

Limitations and Considerations

Important notes:

  • Clearing times are user inputs — Electrisim does not yet read relay/fuse TCC curves automatically for this study
  • Electrode configuration and enclosure dimensions are global for the run (same settings applied to all buses)
  • IEEE 1584 applicability limits (voltage, Ibf, gap) are enforced with clamping/warnings where needed
  • Ralph Lee results above 15 kV are conservative estimates, not IEEE 1584 PPE labels
  • Always apply engineering judgment and site-specific PPE programs (NFPA 70E / local standards)

Technical References

Based on: IEEE Std 1584-2018 (Guide for Performing Arc-Flash Hazard Calculations); short-circuit currents from pandapower short-circuit; calculation library arcflash-calc (IEEE 1584-2018 implementation).

Related: Short Circuit documentation · IEEE 1584 standard

Motor Starting Analysis

pandapower ANDES

Motor Starting checks voltage dip and loading when asynchronous motors start. Use the steady-state study for three snapshots (before / locked-rotor / after), or the dynamic study for a time-domain startup. Methods include DOL, soft-start, star-delta, autotransformer, and reactor.

Where to find it

Simulate → Motor Starting. Requires a subscription. Each motor needs locked-rotor current, R/X, and rated voltage set in the Motor dialog.

When to use

  • Voltage dip vs a limit (for example 10–15%) during DOL or soft-start
  • Comparing starter methods in steady-state
  • Start time and voltage recovery in dynamic mode

How to run

  1. Place Motor elements and fill locked-rotor data.
  2. Click Simulate → Motor Starting.
  3. Choose steady-state or dynamic, the motors to start, and the starter method.
  4. Run and review bus dip, branch loading, and (in dynamic mode) the time plots.
How the two study modes work

Steady-state (pandapower)

  1. Before: motors to start are taken out of service; AC load flow gives pre-start voltages.
  2. During: each starting motor is replaced by a locked-rotor PQ load. Starting current is \(I_{lr} = lrc\_pu \cdot I_n\), scaled by method factor \(k_m\) (DOL = 1, soft-start = \(I_{limit}/lrc\), star-delta = 1/3, autotransformer = \(tap^2\), reactor = \(1/(1+x_r)\)).
  3. After: motors return at their loading; post-start voltages are computed.
  4. Checks: dip % vs limit on every bus; branch loading during start vs thermal limit.

Dynamic (ANDES)

  1. Network is mapped to ANDES; selected motors become Motor3 devices with u=0.
  2. A Toggle connects each motor at \(t_{start}\).
  3. TDS returns bus voltage, motor current, slip, and torque vs time; start time is when slip falls below threshold.
  4. Soft-start in dynamic mode is approximated by scaling motor Sn so initial current ≈ \(I_{limit}\).

Input Parameters

Parameter Description Type Options / typical values Default
Calculation Mode Steady-state voltage dip or dynamic ANDES startup radio steady, dynamic steady
Motor(s) to Start Which motors start in this study select All in-service motors, or one motor All
Starting Method Starter type (exact factors in steady-state; DOL / approx. soft-start in dynamic) select DOL, soft-start, star-delta, autotransformer, reactor DOL
Soft-start Current Limit (p.u.) Current limit as multiple of rated current number Typical 2–4 3
Autotransformer Tap (p.u.) Starting tap for AT method number 0.1–1.0 0.8
Reactor Reactance (p.u.) Series reactor for reactor start number ≥ 0 0.25
Max Voltage Dip Limit (%) Pass/fail threshold for (Vbefore − Vduring) / Vbefore number Typical 10–15 15
Max Branch Loading Limit (%) Thermal check during start number Typical 100 100
Dynamic t_start / t_end Motor connect time and simulation end (dynamic mode) number seconds 0.1 / 5

Results

  • SLD boxes: bus V before/during/after and dip % (green PASS / red FAIL); motor Istart and method
  • Results dialog: tables for motors, buses, branches; CSV download; Chart.js plots for dynamic mode
  • Summary: worst dip, voltage/thermal fail counts

Limitations and Considerations

Important notes:

  • Steady-state locked-rotor model is a snapshot, not a full torque–speed acceleration curve
  • Dynamic soft-start is an approximation (Sn scaling), not a thyristor softstarter controller model
  • Star-delta / autotransformer / reactor factors apply exactly in steady-state; dynamic mode uses DOL (or approx. soft-start)
  • No vendor-specific DSL controllers, synchronous-motor excitation start, or variable rotor resistance
  • Dynamic mode requires a network suitable for ANDES (synchronous generator / slack as for Transient Stability)

Technical References

Based on: pandapower load flow and motor element (lrc_pu, rx); ANDES Motor3 + Toggle for time-domain startup. Typical study outputs include voltage drop before/during/after start, start time, and grid loading.

Related: Motor element · Short Circuit · Transient Stability (ANDES)

Transient Stability (ANDES Time-Domain Simulation)

ANDES

Transient Stability shows how the network responds over time to a bus fault or line trip: rotor swings, voltage recovery, and whether machines stay in synchronism.

Where to find it

Simulate → Transient Stability (ANDES). Requires a subscription. You need at least one Generator with dynamics. An External Grid alone is not enough.

When to use

  • Synchronism after a fault (speed and angle swings)
  • Comparing clearing times and fault locations
  • Voltage recovery after a clear or line trip

How to run

  1. Place a synchronous Generator and fill the Dynamics tab (defaults are applied if fields are empty).
  2. Click Simulate → Transient Stability (ANDES).
  3. Set end time, optional fault bus and clear times, and optional line outage.
  4. Run and inspect generator speed/angle and bus voltage vs time.
How Electrisim maps the diagram to ANDES
  1. Electrisim serialises the diagram (buses, lines, transformers, loads, generators) to the backend.
  2. The backend builds an ANDES system: static models (Bus, Line, PQ, PV/Slack) plus dynamic models (GENROU or GENCLS, exciters, governors).
  3. Missing Dynamics-tab fields receive textbook defaults (reported in the result).
  4. Optional disturbances from the study dialog: bus fault (apply/clear times) and/or a line outage at a given time.
  5. PFlow.run() establishes the operating point; TDS.run() integrates to tf.
  6. Results return as time series: generator ω, δ, bus voltages, and an approximate system frequency from mean ω.

Input Parameters

Parameter Description Type Typical values Default
Frequency System base frequency number 50 or 60 Hz 50
System Base (MVA) ANDES system MVA base for per-unit conversion number 100 100
tf Simulation end time (s) number 5–20 10
Fault Bus Bus where a three-phase fault is applied (optional) select Any bus on the diagram (none)
fault_tf / fault_tc Fault apply and clear times (s) number 1.0 / 1.1 1.0 / 1.1
Line Outage Optional line to trip via ANDES Toggle select Any AC line (none)
toggle_t Line outage time (s) number 2.0 2.0

Results

  • Multi-series charts: generator speed ω (pu), rotor angle δ (rad), bus voltage (pu), mean frequency (Hz)
  • Summary: tf, point count, generator/bus counts, event settings
  • List of applied dynamic defaults and mapping warnings (e.g. skipped DC lines, static generators)
  • CSV export of the time series

Requirements & Limitations (MVP)

  • At least one synchronous Generator; mark one generator as slack (or include an External Grid plus generators)
  • Static generators are not modelled as SynGen in this MVP (warned in results)
  • Three-winding transformers and DC lines are skipped
  • Full ANDES model catalogue (100+ models) is not exposed — GENROU/GENCLS, EXDC2/SEXS, TGOV1 only

Technical References

Based on: ANDES PFlow + TDS. Demo model: transient_stability_two_machine_demo.py (File → Import).

Related: Eigenvalue Analysis · Generator Dynamics tab · Motor Starting (dynamic)

Eigenvalue Analysis (ANDES Small-Signal Stability)

ANDES

Eigenvalue analysis linearises the system around the current operating point and plots modes in the complex plane: damping and oscillation frequency. Negative real parts are stable; positive real parts grow.

Where to find it

Simulate → Eigenvalue Analysis (ANDES). Same requirement as Transient Stability: at least one Generator with dynamics.

When to use

  • Small-signal stability at the current dispatch
  • Poorly damped local or inter-area modes
  • Effect of inertia, droop, or exciter gains (Generator Dynamics tab)

How to run

  1. Use the same dynamic network as for transient stability (no fault is required).
  2. Click Simulate → Eigenvalue Analysis (ANDES).
  3. Run and inspect the s-plane plot, damping ratios, and optional participation factors.
Solver steps
  1. Build the ANDES system as for time-domain simulation (no fault or line-trip disturbances).
  2. Run power flow, then the eigenvalue study.
  3. Return all eigenvalues plus the least-damped oscillatory modes (frequency and damping ratio).
  4. Optionally include participation factors for the top modes.

Input Parameters

Parameter Description Default
Frequency / System Base Same as TDS (Hz / MVA) 50 / 100
n_modes Number of least-damped oscillatory modes to highlight 10

Results

  • Stability verdict: stable, marginally_stable, or unstable
  • Counts: positive / zero / negative eigenvalues
  • s-plane scatter plot and table of σ, ω, f (Hz), damping ratio ζ
  • Participation factors for highlighted modes (when available)

Technical References

Based on: ANDES eigenvalue tutorial.

Related: Transient Stability · Generator Dynamics tab

Protection Coordination Study

pandapower

Protection coordination checks whether devices operate in the right order for a chosen fault. Electrisim runs IEC 60909 short-circuit, then evaluates fuses and overcurrent (and related) devices. You get trip or melt times, complete time-current (TCC) curves, and miscoordination warnings.

Where to find it

Simulate → Protection Coordination. Devices are assigned on the Protection tab of each Switch.

When to use

  • Fuse melt and relay trip times for a fault at a bus or along a line
  • Time-current grading between upstream and downstream devices (complete OCR TCC for DTOC, IDMT, and IDTOC)
  • A first miscoordination screen on a radial feeder
Supported devices

Fuse; OCR DTOC / IDMT / IDTOC (IEC and IEEE/ANSI); earth-fault OCR; directional OCR; differential (87) and distance (21). Fuse currents near transformers follow pandapower short-circuit limits.

How to run

  1. Place switches on lines, transformers, or bus connections in your diagram (switches are required for protection assignment).
  2. Open each switch’s dialog → Protection tab. Choose Fuse (library or custom I–t curve) or OC relay (DTOC, IDMT, or IDTOC). For OCR, set subtype, inverse curve, trip times, and automatic or manual pickup currents (manual values are in amperes).
  3. Click Simulate → Protection Coordination.
  4. In the dialog, choose fault location (along a line or at a busbar), fault type (3ph / 2ph / 1ph), and case (max / min). Configure grading defaults on the Grading tab if switches leave fields empty.
  5. Review the results dialog: short-circuit summary, tripping table (including melting time for fuses), complete I–t / TCC chart, and miscoordination list. Optionally export a .txt report.

Fault location modes

Mode Description
Along a line pandapower create_sc_bus inserts an intermediate fault bus on the selected line at fraction 0–1 (0.5 = mid-line). Set sc_line_id to a line index or all to sweep every in-service line.
At selected busbar sc.calc_sc runs directly at the chosen bus with branch_results=True so fuse currents are available on adjacent branches.

Dialog parameters

These fields are sent as ProtectionCoordinationPandaPower in the POST body together with network elements.

Parameter Description
fault_location_mode line or bus
fault_bus_id Diagram cell ID of the fault busbar (required when mode is bus)
sc_line_id, sc_fraction Line index (or all) and fault position 0–1 (line mode)
fault_type, case 3ph / 2ph / 1ph and max / min short-circuit case
grading_mode auto (pandapower topological grading) or manual (per-switch t_g / t_gg / tms / t_grade from the Switch dialog; supported for DTOC, IDMT, and IDTOC)
curve_type, tms, t_grade, t_g, t_gg, t_diff Default IEC 60255 or IEEE C37.112 inverse curve and timing settings for relays without explicit values
overload_factor, ct_current_factor, safety_factor Defaults for automatic OCR pickup current calculation
show_curves, show_table, show_miscoordination, export_results Results display and export options

Switch protection settings

Per-switch parameters are configured on the Switch dialog Protection tab (see also Switch):

  • Fuse — library type (e.g. Siemens NH-2 series) or custom JSON curve (t_min, t_total, x_min, x_total) plus rated current.
  • OC relay — DTOC, IDMT, or IDTOC; IEC or IEEE inverse curve; TMS, grading delay, instantaneous and backup trip times; automatic or manual pickup currents in amperes. See Overcurrent relays (OCR).
  • Earth-fault OCR (50N/51N), directional OCR (67), differential (87), and distance (21) — configured on the same tab; 87 and 21 use Electrisim evaluators on the short-circuit results.

At least one switch with a protection device assigned is required; otherwise the study returns an error.

Overcurrent relays (OCR)

Assign Overcurrent Relay (OCR) on the Switch Protection tab. Subtype, curve, times, and pickups are taken from that switch; empty timing fields inherit the study Grading tab defaults.

Subtype Characteristic Main settings
DTOC Definite time: I>> trips at t_gg, I> trips at t_g I_g_a, I_gg_a (A); t_g, t_gg (s)
IDMT Inverse time (IEC 60255 or IEEE C37.112) I_s_a (A); tms, t_grade; curve_type
IDTOC Combined: inverse segment up to I>, then definite I> / I>> steps IDMT pickups and times plus DTOC I> / I>> settings
  • Time grading — auto uses pandapower topological grading. manual uses the per-switch times from the Switch dialog (t_g, t_gg, tms, t_grade). Manual grading is supported for DTOC, IDMT, and IDTOC, including a complete IDTOC TCC.
  • Pickup current — auto derives pickups from line ratings and the overload / CT / safety factors. manual uses I_s_a, I_g_a, and I_gg_a in amperes (not kA).
  • Inverse curves — IEC 60255: standard, very, extremely, and long inverse (native pandapower OCRelay). IEEE C37.112 moderately / very / extremely inverse are evaluated by Electrisim from the same short-circuit results; trip times and TCC points are still returned.
  • Evaluating engine — each relay is reported once, and the settings table shows whether it was solved by pandapower or the Electrisim evaluator. Electrisim takes over when pandapower cannot build the relay — most often because pandapower’s topological time grading requires every closed switch to sit on a line, so bus-bus ties or transformer switches make it fail. The reason is listed under Evaluation notes in the results dialog and in the .txt report.

Outputs

  • Short-circuit summary — e.g. Ikss at the fault bus (kA).
  • Tripping table — per switch: device type, tripped/melted flag, activation current (activation_parameter_value, kA), trip/melt time (trip_melt_time_s, s).
  • Time-current chart — log-log TCC (Chart.js): complete relay/fuse characteristic (inverse segment and definite-time steps for IDTOC/DTOC) plus fault trip points.
  • Miscoordination warnings — pairs of devices whose trip times are closer than the grading margin (t_diff).
  • Export — optional .txt download with the same summary fields.

Prerequisites and tips

  • Valid network topology with external grid (or slack) and in-service switches on protected branches.
  • For results comparable to pandapower fuse examples, match fuse types per feeder, avoid duplicate fuses on both ends of the same line unless intended, and align external-grid short-circuit strength (s_sc_max_mva) with your reference case.
  • OCR relays require matplotlib in the backend environment (pip install matplotlib).

Limitations

  • Primary path is short-circuit based; overload (scenario=pp) is optional when enabled in the study dialog. For motor-start voltage dip studies, use Motor Starting Analysis.
  • IEEE inverse curves, earth-fault OCR, directional OCR, differential (87), and distance (21) use Electrisim evaluators on SC results (not native pandapower device classes). DTOC, IDMT, and IDTOC with IEC curves use pandapower OCRelay where the network allows it, otherwise the Electrisim evaluator with the same Switch dialog settings.
  • Line-end duplicate switches report identical branch currents by design.
  • Subscription required in the cloud app (same gating as other premium analyses).

Technical references

pandapower v3.3.2 — Protection · Short-circuit (IEC 60909)

DG Interconnection Screening (OpenDSS)

OpenDSS

Screens a proposed DER (PVSystem, Storage, or Generator) at the point of connection for voltage band, thermal loading, and reverse power. You can compare Volt-VAR inverter control and estimate hosting capacity.

Where to find it

Simulate → DG Interconnection Screening (OpenDSS).

When to use

  • A first interconnection check before a full impact study
  • Whether Volt-VAR or feeder controls would fix a voltage/thermal fail
  • An estimate of hosting capacity at the POC
Typical mitigations

Enable Volt-VAR on the DER inverter, or add feeder controls from the Controls palette (RegControl, CapControl).

How to run

  1. Place a DER on the feeder and note the POC bus.
  2. Click Simulate → DG Interconnection Screening (OpenDSS).
  3. Select POC bus, DER, proposed kW, voltage/thermal limits; optionally enable hosting-capacity search and InvControl compare.
  4. Review pass/fail checks, mitigations, and hosting capacity kW.

Related studies: Battery Sizing for Busbar Requirements; BESS Dispatch Reversal; Grid Code Compliance (P-Q).

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.

Harmonic Analysis

OpenDSS

Harmonic Analysis computes voltage and current THD: how non-linear equipment injects harmonic currents and how they propagate. Assign spectra on the Harmonic tab of the relevant elements, then run this study.

Watch on YouTube

Where to find it

Simulate → Harmonic Analysis (OpenDSS). Set spectra on each source or non-linear element first.

When to use

  • Voltage and current THD at each bus
  • Checks against power-quality limits (for example IEEE 519)
  • Filter design and harmonic propagation from converters or VFDs

How to run

  1. Build the fundamental model: buses with rated voltage, lines, transformers, shunts, and an External Grid.
  2. On each non-linear element, open the Harmonic tab and set the spectrum.
  3. Click Simulate → Harmonic Analysis. Set base frequency and the harmonic orders (for example 3, 5, 7, 11, 13).
  4. Review bus VTHD, per-order voltages, line harmonic currents, and the spectrum chart.
OpenDSS modelling notes

OpenDSS harmonic studies in Electrisim follow the same logical steps as in standalone DSS: assign spectra, define which orders to solve, then run a harmonic power flow. Electrisim automates the command sequence.

  • The slack is an External Grid (Vsource in OpenDSS).
  • NeglectLoadY neglects load shunt admittance in the harmonic solution (common in OpenDSS tutorials).
  • Bus rows in results use the Name from the Bus dialog when you have set it.

Where harmonics are defined (Harmonic tab)

Element Typical use Key parameters
Load Nonlinear or equivalent harmonic current injection (drives, rectifiers, aggregated customer distortion) Spectrum (Default / Linear / Custom / None), spectrum_csv, pctSeriesRL, conn, puXharm, XRharm
External Grid Voltage distortion at the grid or stiff source (often small; use Default or Custom) Spectrum for Vsource (defaultvsource or Custom CSV)
Generator, Static Generator Synchronous machine or equivalent source with subtransient impedance for harmonic interaction Spectrum, spectrum_csv, Xdpp, XRdp
PVSystem Inverter-based resource harmonic current spectrum Spectrum, spectrum_csv; other PV properties as in OpenDSS
Storage Battery inverter spectrum (named spectrum for OpenDSS Storage) Spectrum name (e.g. default)

Parameters from these tabs are included in the payload sent to the solver so the backend can build matching OpenDSS commands.

Spectrum modes (UI)

Mode Meaning for the engineer OpenDSS behaviour (summary)
Default Use the EPRI/OpenDSS built-in spectrum for that element class (e.g. defaultload, defaultvsource, defaultgen). Reference spectra with predefined harmonic content.
Linear Simple “decay with order” teaching or screening case: magnitudes scale roughly as 100/h % on odd harmonics 3, 5, 7, 11, 13 (angles 0°). Not a substitute for device-specific spectra. Electrisim creates an explicit Spectrum object so injection is non-zero; OpenDSS itself does not define a single global spectrum named “Linear” for all elements.
Custom Your measured or manufacturer spectrum (IEC-style table, field survey, or EMTP export). Backend issues New Spectrum.<name> from CSV then references it.
None This element does not inject harmonics for the study (still present at fundamental). No harmonic spectrum on that element.

Load harmonic impedance (OpenDSS)

For loads, %SeriesRL, conn, puXharm, and XRharm control how the load’s harmonic-frequency model splits between parallel and series R–L paths. This matches the EPRI discussion of harmonic load modelling. Always cross-check sensitivity (e.g. %SeriesRL 0 vs 100%) if results are borderline for compliance.

OpenDSS — Harmonics Load Modeling

Harmonic Analysis Results window

  • Summary line — Base frequency, solved orders, NeglectLoadY flag.
  • Voltage spectrum chart — Per selected bus: harmonic voltage magnitudes as percent of fundamental line-to-line voltage (useful for relative distortion at the bus).
  • Table — Name (bus user name when set), VTHD [%], and columns V_h [kV] per order (line-to-line harmonic magnitudes in kV).

If VTHD or harmonic kV are near zero, check that at least one injection source has a non-None spectrum with content at the orders you are solving, and that the network is connected to the slack.

Standards and planning context

Voltage THD and harmonic levels are often compared to limits in IEEE Std 519, IEC 61000, or local grid codes. Limits depend on the agreed PCC, system strength, voltage level, and jurisdiction. Electrisim provides engineering quantities (THD, harmonic voltages and currents); compliance assessment remains your interpretation against the applicable standard and contract.

How it works (solver)

Electrisim drives OpenDSS harmonic flow: the circuit is solved in fundamental mode first, then mode=harmonics is applied with the requested order list. Monitors capture bus-related voltages and line currents per harmonic; results are aggregated into bus VTHD and per-order magnitudes for the JSON response and the UI.

Configuration checklist

Open Simulate, set Analysis type: Harmonic, enter orders (comma-separated), and confirm frequency. Configure each injecting element’s Harmonic tab. For filters, use shunt reactors/capacitors (and lines/transformers) as in the fundamental model. Export OpenDSS commands from the flow dialog if you need to reproduce the case outside Electrisim.

Based on: OpenDSS Harmonic Flow Analysis; OpenDSS Load (spectrum, %SeriesRL); OpenDSS Vsource (external equivalent).

Optimal Power Flow (OPF)

pandapower

Optimal Power Flow finds a least-cost generation dispatch that still respects voltage limits, thermal limits, and generator capability. Unlike load flow, the solver is allowed to change dispatch (within your costs and limits).

Where to find it

Simulate → Optimal Power Flow (pandapower). Set costs and limits on generators, and voltage bands on buses, before you run.

When to use

  • Least-cost dispatch while serving load
  • Checking whether a target dispatch is feasible with voltage and thermal limits
  • Comparing AC OPF (more accurate) with DC OPF (faster, active power only)

How to run

  1. Fill generator costs (or accept dialog defaults) and bus/line limits used by OPF.
  2. Click Simulate → Optimal Power Flow.
  3. Choose AC or DC OPF and run.
  4. Read the new dispatch on generators and the flows that result.
AC vs DC OPF

AC OPF is a full nonlinear optimisation (P, Q, voltage magnitude and angle). DC OPF is a linearised active-power approximation, faster and typical for transmission screening. The solver uses mathematical programming (interior point / SQP-style methods) to minimise cost subject to the network constraints.

Dialog parameters

Parameter Description Type Options/Value Range Default
OPF Type Type of optimal power flow calculation radio AC Optimal Power Flow (runopp), DC Optimal Power Flow (rundcopp) AC OPF
Frequency System frequency radio 50 Hz, 60 Hz 50 Hz
AC Algorithm Solver for AC OPF radio PYPOWER PYPOWER
DC Algorithm Solver for DC OPF radio PYPOWER PYPOWER
Calculate Voltage Angles Whether to calculate voltage angles radio Auto, True, False Auto
Initialization Initial guess strategy radio Power Flow, Flat, Previous Results Power Flow
Delta (Convergence Tolerance) Optimization convergence tolerance number > 0 1e-8
Transformer Model Transformer representation in optimization radio Exact Model (t), Pi Model (pi) Exact Model
Cost function type Generator cost model for the objective radio Polynomial, Piecewise linear, No cost function No cost function
Marginal cost currency Display units for marginal cost fields (numeric values unchanged) select EUR, USD, GBP, CHF, PLN, SEK, NOK, DKK, JPY, CNY, INR, AUD, CAD, Other EUR

Objective Function

The default objective function minimizes total generation cost, which is typically defined as:

Minimize: Σ (Costi × Pgen,i) for all generators i

Where Costi is the cost coefficient for generator i and Pgen,i is the active power output. Cost functions can be linear, quadratic, or piecewise linear.

Polynomial versus piecewise linear (Electrisim)

In the OPF dialog, Cost function type selects how generator operating costs are modeled before calling pandapower:

  • Polynomial — Each synchronous generator gets a smooth cost in active power: by default a small positive quadratic term (convexity / curvature) plus a marginal linear rate that you set per machine (OPF run dialog and/or the generator’s OPF tab as marginal cost per MWh). This matches pandapower poly_cost (cp2_eur_per_mw2, cp1_eur_per_mw, cp0_eur). It is usually the most robust choice for AC OPF.
  • Piecewise linear — Cost is linear on each power segment; Electrisim builds a single segment between each generator’s minimum and maximum OPF active power, with slope equal to your marginal rate (same interpretation as the linear term in the polynomial case). This matches pandapower pwl_cost. Use it when you think of marginal price as constant between min and max P; multi-segment tariffs would require additional segments (not exposed individually in the UI).
  • No cost function — No polynomial/PWL costs are created for economic minimization; the OPF can still converge but economic dispatch is not driven by generator marginal costs.
Cost curve shape (schematic)

Same axes in both panels: horizontal axis is generator active power P over the dispatch range; vertical axis is operating cost contribution C (arbitrary units). Electrisim uses one linear segment for piecewise-linear cost between each machine’s OPF min/max P.

Polynomial versus piecewise-linear generation cost curves Two plots: left shows a smooth polynomial cost versus power with increasing slope; right shows a straight segment with constant slope. Polynomial (smooth) P (MW) Cost C ∂C/∂P increases Piecewise linear (one segment) P (MW) Cost C ∂C/∂P constant

Left: A positive quadratic term makes marginal cost rise with output—useful for differentiable models or rising incremental heat rates. Right: A single segment fixes marginal price over the whole OPF band (simple block tariff).

Currency — The OPF dialog lets you choose a marginal cost currency for labels only. Numerical values are passed to the solver as-is; pandapower still names internal cost columns with eur for historical reasons. Interpret objective values (e.g. total_cost) in the same unit system you used when typing marginal costs.

Constraints

The OPF solution must satisfy:

  • Power Balance: Total generation equals total load plus losses
  • Generator Limits: Pmin ≤ Pgen ≤ Pmax, Qmin ≤ Qgen ≤ Qmax
  • Voltage Limits: Vmin ≤ V ≤ Vmax at each bus using net.bus.min_vm_pu / max_vm_pu from the diagram (see Bus)
  • Thermal Limits: Branch loading respects element ratings; optional OPF caps — set max_loading_percent on lines, two-winding, or three-winding transformers. A value > 0 adds a pandapower OPF thermal limit for that element; 0 leaves the default unconstrained behaviour.
  • Reactive Power Limits: Generator reactive power capability constraints

Output Results

The OPF results include optimized dispatch and system state:

Output Category Parameters Description
Optimization Status Status, Success flag Whether optimization converged successfully
Total Cost Objective function value Minimum total generation cost achieved (monetary units)
Generator Dispatch P_opt, Q_opt Optimal active and reactive power output for each generator
Bus Voltages vm_pu, va_degree Optimal voltage magnitudes and angles at all buses
Power Flows P_from, Q_from, P_to, Q_to, Loading Optimal power flows and loading of lines and transformers
Marginal Costs Lambda_P, Lambda_Q Shadow prices (marginal costs) for active and reactive power at each bus
Constraint Violations Violation details Information about any constraint violations if optimization failed

Prerequisites

  • OPF-capable network: slack/external grid, generator and storage models compatible with pandapower OPF.
  • Bus voltage bounds (min_vm_pu, max_vm_pu) should bracket a feasible region.
  • For meaningful objective values, define polynomial or piecewise costs—Electrisim can auto-create defaults from the dialog Cost function type when no costs exist.

Diagram-level inputs

  • Generators: active/reactive limits and any OPF-specific fields exposed in element dialogs.
  • Storage: optimisation-tab limits map into pandapower OPF constraints.
  • Buses: voltage set-points and min/max magnitudes bound the OPF solution.

API response (successful OPF)

The route returns JSON with:

Key Contents
opf_converged Whether pandapower reported successful optimisation (net.OPF_converged).
total_cost net.res_cost objective scalar when converged.
busbars Voltages, injections, and OPF duals lam_p, lam_q when available.
lines Flows, currents, loading, optional thermal duals mu_sf/mu_st.
generators Dispatch plus gen_cost/marginal_cost estimated from polynomial costs.
externalgrids, loads Final injections consistent with the OPF solution.

Failures respond with error: true, a descriptive message, exception text, and optional pandapower diagnostic payloads.

Note: PandaModels.jl / PowerModels.jl OPF paths referenced in pandapower docs are not wired through Electrisim; only PYPOWER-style runopp/rundcopp are available.

Algorithm Details

AC OPF: Solves the full nonlinear optimization problem using Interior Point Method (IPM) or Sequential Quadratic Programming (SQP). Provides accurate results but requires significant computation time for large networks.

DC OPF: Uses a linearized power flow model (ignoring losses and reactive power). Much faster than AC OPF but less accurate. Suitable for transmission planning where reactive power is less critical.

Solver: PYPOWER, which is based on MATPOWER and uses MATLAB optimization solvers (converted to Python).

Limitations and Considerations

Important Notes:

  • OPF assumes perfect information and deterministic conditions - does not account for uncertainty
  • Cost functions must be defined for generators (linear or quadratic coefficients)
  • AC OPF may fail to converge for heavily loaded or ill-conditioned systems
  • DC OPF ignores reactive power, losses, and voltage constraints
  • Results represent steady-state optimal dispatch - dynamic constraints are not considered
  • Large networks may require significant computation time, especially for AC OPF
  • Market rules and regulatory constraints may not be fully represented

Technical References

Based on: pandapower Optimal Power Flow and PYPOWER.

Algorithm Type: Nonlinear/Linear optimization with Interior Point Method or Sequential Quadratic Programming.

Documentation References: 📘 pandapower Optimal Power Flow 📘 PYPOWER OPF

Time Series Simulation

pandapower

Time Series runs one AC load flow per hour (or time step). At each step, load and generation follow the profiles you enter, so you can see voltages and loadings over a day or a year.

Where to find it

Simulate → Time Series Simulation (pandapower).

When to use

  • Daily or yearly voltage and loading with varying load and generation
  • Checking whether a snapshot load flow hides an overloaded hour

How to run

  1. Build the network and confirm a single Load Flow converges.
  2. Open Time Series Simulation.
  3. Set the horizon (for example 24 hours) and a profile for each load and generator.
  4. Run and review charts in the results dialog; export if you need a spreadsheet.
How this relates to pandapower time series

Each step updates P/Q from your profiles and solves AC load flow. The idea matches the pandapower time series tutorial, but Electrisim drives the loop itself rather than the pandapower OutputWriter pipeline.

Dialog — simulation horizon

  • time_steps — number of sequential power-flow solves. Each step represents one hour by default (e.g. 24 = one day, 8760 = one year).

Dialog — load & generation profiles (per element)

Every Load, Generator, and Static Generator on the diagram gets its own profile editor. Enter one numeric value per time step, separated by commas or spaces. You can also import a .csv or .txt file.

Profile mode Meaning When to use
Absolute P (MW) Sets active power directly in MW at each hour (Q scales proportionally unless overridden). Recommended for tutorial-style networks and when base-case P from the diagram should be replaced entirely.
Scale factor (× base P) Multiplies the element’s base p_mw from the diagram (e.g. 0.8 → 80% of rated P). Use with built-in preset shapes (daily load, solar, wind) via Quick fill or Fill preset.

Quick fill (optional toolbar above the element cards) lets you apply a preset shape to all loads or all generators at once — this replaces the older “Global preset” mode, which applied one profile to every element and often failed to converge on meshed or transformer-heavy networks. Per-element control with absolute MW values is the recommended approach.

Preset shapes available for quick fill:

  • Load: constant, daily (residential), industrial, variable
  • Generation: constant, solar, wind, variable

The Random (tutorial) button fills absolute MW values between 0 and the element’s base P — matching the pandapower notebook example.

Dialog — advanced power flow settings

Collapsed under Advanced power flow settings in the dialog:

  • frequency — system frequency (Hz).
  • algorithm — nr (Newton-Raphson), iwamoto_nr, fastdecoupled, or dc.
  • calculate_voltage_angles — auto, yes, or no.
  • init — initialization method. Auto is recommended; after the first converged step the backend warm-starts from previous results.

Convergence tips

  • Verify the network converges in a single Load Flow before running time series.
  • Use Absolute P (MW) when values look like notebook MW numbers — do not mix absolute MW values with scale-factor mode.
  • Keep initialization on Auto unless you have a specific reason to change it.
  • Large simultaneous swings in load and generation can stress weak networks; try smoother profiles first.

Results dialog

After a successful run, the results dialog shows:

  • Summary — convergence status, duration, element counts, and non-converged step numbers if any.
  • Charts — input profiles, bus voltages, line loading, load P, static generator P.
  • Statistics — min / max / average voltage and line loading across all hours.
  • Detailed data — scrollable table of bus results for every hour.

Enable Download Excel report automatically in the setup dialog, or click Export to Excel in the results dialog. Sheets include Summary, res_bus, res_line, res_load, res_sgen, and profiles. If the Excel library cannot load, a CSV fallback is offered.

API payload

Posted as TimeSeriesSimulationPandaPower Parameters together with the diagram JSON:

  • time_steps, profile_mode (always custom from the UI), element_profiles — per-element { element_type, mode, values, display_name }.
  • load_profile, generation_profile — preset names used only for quick-fill reference.
  • frequency, algorithm, calculate_voltage_angles, init.

Outputs (JSON)

Key Meaning
timeseries_converged true only if every time step converged.
time_steps Requested horizon (hours).
profiles_used Per-element profiles actually applied, including display_name for chart labels.
busbars { name, id, time_step, vm_pu, va_degree, p_mw, q_mvar } for each bus and hour.
lines { name, id, time_step, loading_percent, p_from_mw, p_to_mw }.
loads, sgens Simulated P/Q per element and hour.
voltage_statistics, loading_statistics Per-bus / per-line min, max, average across steps.
time_stamps Synthetic timestamps (hourly from 2024-01-01).

Extraction tip: Filter busbars / lines by time_step to plot trajectories; use the statistics blocks for KPI cards.

pandapower alignment

Official reference: Time Series Simulation. Electrisim approximates the profile-driven loop using repeated runpp calls, which is appropriate when you need bus/line summaries and Excel export rather than registered OutputWriters.

Economic Analysis

pandapower

Economic Analysis totals CAPEX from element costs, power losses from a load flow, and optionally energy losses over a lifetime using load and generation profiles.

Where to find it

Simulate → Economic Analysis. Enter cost per unit on the Economic tab of each element first.

When to use

  • Project CAPEX from lines, transformers, and other equipment
  • Where the losses are (lines, transformers, impedances, DC lines)
  • Energy-loss cost over a lifetime when you supply an energy price

How to run

  1. Fill the Economic tab on the elements you want in the CAPEX total.
  2. Click Simulate → Economic Analysis.
  3. Optionally enable energy-loss profiles and a lifetime / energy price.
  4. Run and compare CAPEX, power losses, and energy-loss cost.

How it is calculated

The economic analysis performs the following steps:

  1. CAPEX: Sums costs from the Economic tab of each element (lines, transformers, etc.). For lines: cost × length_km × parallel. For transformers: cost × parallel.
  2. Power Losses: Runs one AC load flow and extracts active power losses (pl_mw) from lines, transformers, three-winding transformers, impedance branches, DC lines / DC lines mapped through pandapower.
  3. Energy Losses (optional): When profiles are enabled, Electrisim builds hourly scaling traces for loads and generators, evaluates losses on a compact grid of operating points with repeated runpp, then interpolates losses for each hour (SciPy RegularGridInterpolator when both load and generation vary). This estimates the sum of hourly loss energy, Σ Ploss(t)Δt, with Δt = 1 h.
  4. Period vs lifetime MWh: The simulation-period integral is exposed as total_energy_losses_period_mwh. Multiplying by Lifetime (years) yields total_energy_losses_mwh, representing cumulative losses across the project horizon.
  5. Energy Loss Cost: When an energy price is supplied, cost equals total_energy_losses_mwh (lifetime MWh) × price.

Formulas: Power Losses and Electrical Energy Losses

Power losses are computed by pandapower from the load flow results. The following formulas apply per element type:

Power Loss (Ploss) per Element

AC Line, Impedance, DC Line (line_dc):

Ploss = Pfrom + Pto

where Pfrom is active power flow into the element at the "from" bus, and Pto is active power flow into the element at the "to" bus (power flow convention: one direction is positive, the other negative, so the sum equals the power dissipated).

Transformer (2-winding and 3-winding):

Ploss = Phv + Plv

where Phv is active power at the high-voltage side and Plv at the low-voltage side. Equivalent to Pfrom + Pto in terms of power balance.

HV DC Link (dcline):

Ploss = Pfrom + Pto

with Pto = −Pfrom × (1 − loss_percent/100) − loss_mw. The loss is thus Pfrom × (loss_percent/100) + loss_mw.

Physical interpretation: For resistive elements (lines, impedance), Ploss ≈ I²R, where I is the current and R the resistance. For transformers, losses include copper (I²R) and iron (no-load) losses.

Total Power Losses

Ptotal,loss (MW) = Σ Ploss over all lines, transformers, impedance elements, and DC lines

Electrical Energy Losses

Hourly losses are reconstructed via interpolation from strategically sampled AC load flows (see workflow above—not full pandapower run_timeseries). Energy over the simulated horizon:

Eperiod (MWh) = Σt=1..N Ploss(t) × Δt

Lifetime cumulative energy:

Elifetime (MWh) = Eperiod × lifetime_years

The JSON field total_energy_losses_period_mwh stores Eperiod; total_energy_losses_mwh stores Elifetime.

Energy Loss Cost

Cost = Elifetime (MWh) × energy_price_per_MWh

Economic analysis request payload

The frontend merges diagram cells with an object typ: "EconomicAnalysisPandaPower Parameters". Important keys mirrored by Flask (app.py):

  • frequency, currency, algorithm, calculate_voltage_angles, init
  • use_generation_profile — UI sets this true whenever profile widgets are shown.
  • time_steps, lifetime_years, load_profile, generation_profile, energy_price_per_mwh, energy_price_currency, calculation_mode

Economic analysis JSON outputs

  • total_capex, capex_breakdown: Aggregated CAPEX and per-element contribution pulled from diagram economics fields.
  • total_power_losses_mw, power_losses_breakdown: Sum of pl_mw after the baseline load flow.
  • total_energy_losses_period_mwh: Integrated losses over time_steps hours (Δt = 1 h).
  • total_energy_losses_mwh: Lifetime cumulative (= period × lifetime_years).
  • energy_loss_cost: Lifetime MWh × price when provided.
  • load_profile_values, generation_profile_values: Hourly scaling vectors stored for auditing/charts.

Input Parameters

Parameter Description Type Options/Value Range Default
Frequency System frequency for load flow radio 50 Hz, 60 Hz 50 Hz
Display Currency Currency for CAPEX and cost display select EUR, USD, PLN, GBP, etc. EUR
Time steps (hours) Number of hours for energy loss time series (e.g. 8760 for one year) number > 0 8760
Lifetime (years) Project lifetime for energy loss calculation number > 0 30
Load profile Load scaling profile (appears when model has loads) select Constant, Residential (yearly, seasonal), Industrial (yearly, seasonal) Constant
Generation profile Generation scaling profile (appears when model has generators) select Constant, Solar, Onshore wind, Offshore wind Constant
Energy price per MWh Optional energy price for loss cost calculation (uses Display Currency) number ≥ 0 100

Results

  • Total CAPEX: Sum of all element costs in the selected currency
  • CAPEX Breakdown: Table of element type, name, and cost per element
  • Total Power Losses (MW): Sum of active power losses from load flow
  • Power Losses Breakdown: Table of element type, name, and power loss (MW) per element
  • Total Energy Losses (period): total_energy_losses_period_mwh — integrated MWh over the simulated hour window.
  • Total Energy Losses (lifetime): total_energy_losses_mwh — equals period energy × lifetime years.
  • Energy Loss Cost: Lifetime MWh × energy price when specified.
  • Profiles used: Load and generation profile names and hour count used for the calculation

Note: Set cost per unit in the Economic tab of each element dialog (lines, transformers, etc.) before running Economic Analysis. Element names in the breakdown match the names shown in the CAPEX and Power Losses tables.

Grid Code Compliance (P-Q) App menu: Grid Code Compliance (P-Q)

pandapower

This study builds a P-Q diagram at the point of connection. It sweeps plant active power, runs load flow at each step and PCC voltage, and records the Q range the plant can deliver. The results chart plots net P and Q at the PCC (including collector and transformer losses). The blue grid-code overlay is in p.u. of Pmax at the PoC. Plant Q can be set locally on each static generator / wind turbine, or dispatched through a Park Controller as constant Q at the point of connection.

Where to find it

Simulate → Grid Code Compliance (P-Q) (pandapower only). Requires a subscription.

Worked examples: 33 MW onshore wind farm (park controller at the 110 kV POC); offshore wind P-Q/Pmax — 450 MW grid compliance (Part 1) (video card).

Use cases:

  • Verify that the plant can deliver required Q (lagging/leading) across the P range at different PCC voltages
  • Compare simulated capability (red) against grid code templates (e.g. ENTSO-E PPM, VDE AR-N, Saudi Arabian Grid Code (SAGC), other national codes) on the same chart (blue)
  • Document compliance using the compliance badge and exported CSV
  • Study the effect of tap changers, shunt reactors, loading limits, and voltage protection on the envelope at the PoC

P and Q at the point of connection: The sweep still dispatches active power on the selected generators (as % of Pn). The results chart does not use that generator P. Red is net P and Q at the PCC from each solved load flow, so collector and transformer losses pull the top of the red envelope below installed P. Blue is the grid-code template in p.u. of that same Pmax at the PCC (including Q/Pmax ratios such as 0.33), not generator Pn. Installed P stays in the summary as the nameplate / sweep reference.

Plant Q dispatch: Choose Local Q on each static generator / wind turbine or Park Controller. Place and configure a Park Controller on the SLD first (Machines, General, Distribution tabs) if you use park dispatch. If one is on the diagram, this study selects it automatically; click Configure… to open the same dialog. Park mode uses constant Q at the point of connection and reduces the plant Q setpoint if loading or voltage limits bind. Local Q sets each unit’s q_mvar from its P–Q capability (or circular Sn–P fallback) and takes other park controllers out of service so they cannot overwrite Q.

How to run it

  1. Model the plant: PCC bus, external grid at the point of connection, wind turbines and/or static generators, and optionally a Park Controller linked to those machines.
  2. Simulate → Grid Code Compliance (P-Q) (pandapower only).
  3. Select PCC, external grid, plant units, and (if using park dispatch) the Park Controller (auto-filled from the park Machines list when park mode is on).
  4. Set Pn, sweep start / step / end (% of Pn), voltage levels, and optional grid-code P-Q template. Q limits are taken from each wind turbine / static generator Q capability tab when that curve is enabled; otherwise a circular Sn–P limit is used. You do not set a separate Q mode in this dialog.
  5. Optionally enable loading limit, voltage protection at LV terminals, two-winding and/or three-winding worst-case transformer taps, shunt reactor control, shunt on/off before plant Q, and Q with units not operating.
  6. Run the calculation. A progress overlay shows voltage levels and load flows; you can Stop between steps.

Key parameters

The input dialog groups these into Point of connection, Plant, P–Q sweep, Transformer and shunt control, Loading limit, Voltage protection, Grid code requirement, and Results.

ParameterMeaning
Plant Q dispatchLocal Q sets each selected static generator / wind turbine to its capability Qmax or Qmin at that P. Park Controller dispatches plant Q as constant Q at the point of connection. If a Park Controller is on the diagram, it is selected automatically when you switch to park mode. Choose “— none —” only if you do not want a park.
PnReference active power for the sweep only (start / step / end and Q reduction step as % of Pn). 0 = sum of selected unit ratings. The results chart does not plot this P: red uses net P at the PCC, and p.u. chart units are p.u. of Pmax at the PCC.
UnRated (nameplate) voltage of the PCC bus. Leave 0 to use the bus vn_kv. This is the per-unit voltage base.
UcDeclared supply voltage at the connection point (grid-code Uc). It can differ from Un. Leave 0 to use Un. Each voltage level is applied on the PCC as (p.u.) × Uc/Un. Example: Un = 110 kV, Uc = 115 kV → 1.0 pu is applied as 1.045 pu.
Sweep start / step / endActive-power sweep as % of Pn.
Q reduction stepResolution for the Q search, as % of Pn. After a violating load flow, plant Q is reduced until limits are OK or Q = 0, to this step size.
Frequency50 Hz or 60 Hz for the load flows in this study.
Operating rangeSign of plant P in the sweep (which operating points are calculated). Generation evaluates Pstart…Pend as export (P ≥ 0). Consumption uses the same percentages as import (P ≤ 0, e.g. storage charging). Generation and consumption runs both. This is not a plot-sign setting — switch generator vs load convention on the results chart after the run.
Q limitsNot a dialog setting. Each selected wind turbine or static generator uses its Q capability tab when the curve is enabled. Units without a curve use a circular limit from Sn and P. The Park Controller option Use machine P–Q capability curves is separate: it only governs how plant Q is shared among machines during park control, not which envelope this study starts from.
Units that keep their diagram POptional. The sweep scales plant P across the selected generators. Tick units that should not be scaled — they keep the P already set on the diagram (for example a neighbouring machine outside this plant). Leave empty to scale every selected generator.
Two-winding transformer tap changerWorst-case taps on two-winding transformers that have Discrete tap control enabled: two voltage setpoints (min and max of that transformer’s band); keep the more restrictive Q envelope. Other two-winding transformers keep their diagram tap_pos. After plant Q is applied, DiscreteTapControl is run again so the controlled side stays in a deadband at the chosen edge of that transformer’s band. The deadband is never made narrower than one tap step (tap_step_percent), because a discrete tap overshoots such a band and the controlled load flow would fail to converge. If the whole configured band is narrower than one tap step, neither edge is reachable and both runs aim at the band centre instead. Results report every operating point where tap control could not keep the controlled bus inside the band you configured, with the worst voltage, whether the tap was already at an end position, and whether the band is too narrow for the tap step.
Three-winding transformer tap changerSame worst-case DiscreteTapControl logic for three-winding transformers that have discrete tap control enabled (control side hv, mv, or lv). Independent of the two-winding checkbox.
Shunt reactor controlpandapower DiscreteShuntController (voltage / target step) and Line P→shunt step, as configured on the shunt dialog — the same controllers as Load Flow. Independent of shunt on/off below.
Shunt on/off (reduce steps before plant Q)Switch shunt compensation on/off automatically. With the loading limit, shunt compensation is reduced toward zero one step at a time before plant Q is cut. This can be used together with Shunt reactor control.
Loading limit / max loadingCap Q so line and transformer loading stay within the limit.
Voltage protectionCap Q when generating-unit LV terminal voltage leaves the min…max band.
Q with units not operatingExtra load flow with the selected units at P = Q = 0 (plant off). Results show residual P and Q at the point of connection from the rest of the network (loads, cables, shunts). This is not the P = 0 point on the red capability chart, which is plant Qmin/Qmax while the units are still providing reactive power.
Grid code requirementPick a built-in P-Q template or a custom table (see built-in templates). After the sweep, the blue overlay is scaled to Pmax at the PCC (highest net P on both Qmax and Qmin branches). Q requirements (e.g. 0.33 Q/Pmax) scale with that Pmax. A custom MW table is treated as p.u. of Pn and then scaled the same way. Compliance is assessed on this PCC-based envelope: the plant is compliant when red fully covers blue.
Table at 10%…100% of PnAdds a results table of Qmax and Qmin at 10%, 20%, … 100% of Pn along the PCC P axis (plus over-/underexcited power factor), in addition to the P–Q chart. A row is omitted when that P is above the highest net P delivered at the PCC (typical when collector/transformer losses keep PPCC below Pn). Included in the CSV download. The chart is always produced.

Procedure

For each voltage level, plant P is taken from the sweep start / step / end (% of Pn). Operating range sets the sign: generation uses +P, consumption uses −P, and “both” evaluates both signs. That sweep P is dispatched on the selected generators. The red chart plots net P and Q at the PCC from each solved load flow. The blue grid-code envelope uses the same Pmax: the highest net P delivered at the PCC (Q/Pmax ratios from the template apply to that Pmax, not generator Pn). Then for each sweep P:

  1. Set Q to the plant/unit capability (Qmax, then Qmin) and run a load flow.
  2. If loading limits are violated and Shunt control plus Loading limit are on, reduce shunt compensation one step at a time before touching plant Q.
  3. Then reduce Q until the network is within limits or Q reaches 0 Mvar (resolution = Q reduction step % of Pn).
    • Local Q: each unit’s Q setpoint is reduced as a function of its rating (local Q on the static generator / wind turbine).
    • Park controller: the Park Controller constant-Q setpoint at the point of connection is reduced.
  4. Transformer tap control: two load flows per P (lower vs upper tap voltage setpoint) on two-winding and/or three-winding transformers that have Discrete tap control enabled (each family is optional); keep the more restrictive Q envelope. Plant Q is applied first, then taps, so the controlled bus stays in the (pinned) band at the displayed operating point. Where the tap changer cannot reach the band, the point is still reported as reactive-power capability but flagged as not voltage-regulated.

Park Controller Q applies to wind turbine and static generator elements only, not synchronous generators. OpenDSS is not supported. You can Stop a run from the progress overlay; the backend cancels between load flows.

What the results show

  • Red capability — net P (Y) and net Q (X) at the selected PCC bus from each load flow, including collector and transformer losses. This is not dispatched generator P. Qmax is overexcited (solid); Qmin is underexcited (dashed). Click a red point to apply that load flow on the diagram.
  • Blue requirement — the chosen grid-code envelope in p.u. of Pmax at the PCC, so the top of the blue area lines up with the top of the red area. Q/Pmax ratios from the template apply to that Pmax, not to installed / generator Pn.
  • Summary — PCC bus, generator count, installed P (Pn / nameplate), Pmax at PCC, voltage levels, tap/shunt status, Q dispatch mode, load-flow count, and overall P-Q compliance.
  • Chart units — MW/Mvar, or p.u. of Pmax at the PCC. Sign convention is generator (+P export) or load (+P import). Those toggles do not change which sweep points were calculated; that is Operating range on the input dialog.
  • Compliance — COMPLIANT when red covers the required Q band at every P on the blue envelope (and at the measured PCC P points that fall inside that band). If a required P is above the delivered PCC P span, that point is not met.
  • Q with units not operating — residual P/Q at the PCC with the selected units at P = Q = 0. This is not the red P = 0 capability (units still supplying Q there).
  • Download CSV — P at PCC for the Qmax and Qmin branches, dispatched generator P, Qmax/Qmin, power factors, optional 10% Pn table, residual PQ0, and the (PCC-scaled) requirement envelope.

Built-in grid code templates

Choose Custom (manual table) to type P, Qmin, and Qmax yourself, or pick a built-in envelope. Values are stored as per-unit of a P base (Pn, or a custom MW table treated as p.u. of Pn) and then scaled to Pmax at the PCC (the highest net P from the load flows), so the blue envelope sits on the connection-point P axis with the red capability. These summaries support study and visualization only—always confirm against the official code text and your TSP or connection agreement.

  • ENTSO-E RfG — PPM inner envelope (EU minimum); PPM outer envelope (maximum TSO range)
  • VDE AR-N 4120 variant 2 (Germany HV, ≥110 kV); VDE AR-N 4110 (Germany MV)
  • Polish IRiESP — Type D (≥110 kV); PPM / wind farms; PPM P-Q/Pmax Fig. 2 @ 400 kV (offshore Type D PPM). The 400 kV PPM template matches NC RfG Figure 2: ±0.33 Q/Pmax at Pmax, −0.35 / +0.40 Q/Pmax from 10–90% P.
  • GB Grid Code (UK, National Grid ESO)
  • Spanish P.O. 12.2 (REE)
  • Danish Grid Code (Energinet TF 3.2.5)
  • Italian Grid Code (Terna, Allegato A.68)
  • Saudi Arabian Grid Code (SAGC, May 2024) — Connection Code §2.5.5.1, Fig. 2.1:
    • Power Park Module: at the connection point, for active output below 20% of rated power, Q within ±0.05·Prated; for output above 20%, Q within ±0.33·Prated (unless the TSP agrees a different threshold in the connection agreement).
    • Synchronous generating unit: at rated active power, capability between 85% power factor lagging and 95% leading at the unit terminals. For P below rated, the template uses a linear ramp toward (0, 0) so the chart has points to interpolate; the published text is explicit at rated output, so check with your TSP if you need a different partial-load shape.

Based on: pandapower AC power flow (runpp) executed repeatedly inside Electrisim’s Grid Code Compliance (P-Q) workflow.

Grid Code Compliance (V-Q) App menu: Grid Code Compliance (V-Q)

pandapower

This study maps U-Q/Pmax at the point of connection: plant active power is held at Pmax (default 100% of Pn) while the external grid voltage is swept. At each voltage, Electrisim searches feasible Qmax and Qmin at the PCC (red). The blue overlay is the grid-code U-Q/Pmax requirement in Q/Pmax × Pn (registered Pmax), not scaled by collector losses. Plant Q can be local on each unit or dispatched through a Park Controller as constant Q at the point of connection.

Where to find it

Simulate → Grid Code Compliance (V-Q) (pandapower only). Requires a subscription. Distinct from Grid Code Compliance (P-Q) and from the older combined Grid Code Compliance (P-Q & U-Q) menu item.

How to run it

  1. Model the plant with PCC, external grid, and wind turbines / static generators (and optionally a Park Controller).
  2. Simulate → Grid Code Compliance (V-Q).
  3. Set P at Pmax (% of Pn), plant Q dispatch (local or Park Controller), and a U-Q/Pmax template (for example ENTSO-E PPM U-Q inner). The voltage sweep uses the U (p.u.) vertices of that envelope; you do not enter a separate voltage list.
  4. Run the study. The results chart shows Q versus U; click red points to apply that load flow on the diagram.

Compliance: COMPLIANT when red capability fully covers the blue U-Q/Pmax envelope over the template voltage range. Un/Uc at the PCC work as in the P-Q study (applied voltage = p.u. × Uc/Un). This is a study walkthrough, not a TSO submission.

Based on: the same pandapower load-flow search as Grid Code Compliance (P-Q), with a single P setpoint and a voltage sweep.

Data center interconnection workflow

pandapower ANDES

Electrisim supports a practical data-center interconnection path on existing engines: site screening with headroom and contingencies, ANSI pre/post short circuit, and ANDES RMS dynamics with an optional computational-load ride-through check. It does not bundle MMWG/WECC/ISO cases, read PSS/E CMLD/PERC1 .dyr records, or run EMT (ParaEMT/dpsim).

Where to start

New diagram → Data center interconnection (utility pocket) tutorial for a small POI workflow, IEEE 118-bus transmission benchmark for a public 118-bus MATPOWER case (templates/tutorials/ieee118.py), or IEEE 300-bus transmission benchmark for the larger public case (templates/tutorials/ieee300.py). Neither is an official MMWG, WECC, ERCOT, or ISO planning base. PSS/E .raw and TARA .con are not imported directly.

Site screening (Beta)

Simulate → Data Center Site Screening (Beta). Tick the candidate loads, set MW sizes (for example 300, 500, 1000), power factor, voltage and thermal limits, and whether to include capped N-1-1 (line/transformer pairs, with a hard cap on the number of cases). Show hides the dialog and selects that load on the canvas; Back to site screening restores the dialog with your selections kept. Minimize on the title bar does the same.

The results table lists headroom MW, the intact system, the worst N-1 and N-1-1 cases, and an upgrade likely outcome when headroom is below the requested size or an outage adds violations. Click a violation count to see each bus, line, and transformer that is outside the limits, together with the value and the limit. Open this load flow in Network Dashboard hides the results and opens that case. The project load is selected on the diagram and labeled with the megawatts used in the case. That label is removed when you return to the results or close the dashboard. In the dashboard, click a critical issue to scroll to that element. CSV export uses the same columns as the table.

Short circuit (pre vs post)

On Simulate → Short Circuit, Pandapower tab: tick ANSI/IEEE C37 (beta) and Compare pre/post project. List project elements to take out in the pre case (data-center load, on-site gen, BESS). Export pre/post CSV from the results dialog; for single-line-to-ground faults, use I½ sym at the POI for NGR sizing. IEC 60909 remains available on the same dialog; methods are not interchangeable for utility submission without engineering review.

Dynamics and computational load

Simulate → Transient Stability (ANDES): optional bus fault, line outage, generator trip, and POI bus for voltage/frequency metrics. On the Load dialog, Data center tab enables a ride-through CSV (time vs minimum voltage pu). After TDS, Electrisim compares the POI RMS voltage trace to that curve (pass/fail). This models IT constant-P and cooling via ZIP fields; it is not CMLD/PERC1 and not sub-cycle EMT.

Out of scope in this release

Copyrighted WECC/MMWG/ERCOT/ISO base cases, CMLD/PERC1 dynamic load records, transformer inrush, and sub-cycle sag (EMT) require external tools or future ParaEMT integration.

Contingency Analysis

pandapower

Contingency analysis takes equipment out of service one piece at a time, runs AC load flow, and flags thermal or voltage violations. Today this is single-outage (N-1 style) only.

Where to find it

Simulate → Contingency Analysis. Requires a subscription. Confirm a base Load Flow converges first.

When to use

  • N-1 screening for overloads and voltage excursions
  • Ranking outages by violation count
  • A worst-case snapshot for reinforcement discussions
Current limits

Only one element is outaged at a time (line, two-winding transformer, or synchronous generator). Dialog options for N-2, N-K, selected subsets, and redispatch are reserved for later releases and are not applied yet.

How to run

  1. Build and solve a normal Load Flow first so the network is connected and the base case converges.
  2. Ensure each busbar has a numeric nominal voltage vn_kv (kV), not descriptive text from other equipment.
  3. Click Simulate → Contingency Analysis (active subscription required).
  4. In the Contingency Analysis Parameters dialog, set element type (lines, transformers, generators, or all), voltage and thermal limit checks, and thresholds (min/max voltage in p.u., maximum loading %).
  5. Click Analyze. When the study completes, the Contingency Analysis Results dialog opens automatically.
  6. Use filters and expandable rows to inspect violations; download CSV for a full audit trail or expand Worst-case network snapshot for bus/line/trafo values after the heaviest outage.

Results dialog

After a successful run, Electrisim shows an interactive results window (not only console output):

  • Summary cards — cases analyzed, converged, failed, cases with violations, total violation count.
  • Search and filters — find a case by name or outage text; show All, With violations, or Failed only.
  • Case list — sorted by violation count (highest first). Each row shows status (Converged, Non-convergent, or Failed), a violation badge, and a short summary (e.g. voltage vs thermal counts).
  • Expandable details — click a row to open grouped tables for voltage and thermal violations (up to 25 rows per group in the UI; use CSV for the full list).
  • Worst-case snapshot — collapsible section with bus, line, and transformer results from the contingency with the most violations (same data used for optional diagram colouring).
  • Download CSV — exports every case with status and violation summaries.

Non-convergent cases mean the AC power flow did not solve after that outage (often islanding or loss of slack). Failed indicates another backend error; the detail row shows the message.

How it works (backend)

How it works (backend)

  1. Network export: The diagram is collected with the same prepareNetworkData pipeline as Load Flow (buses, lines, transformers, generators, loads, external grid, and so on).
  2. Base case: Run AC load flow on the intact network; abort if isolated buses are detected.
  3. Build cases: For each in-service element of the selected type, create one contingency record.
  4. Outage simulation: deepcopy the network, set that element in_service = False, run runpp.
  5. Limits: Compare bus voltages to your min/max (p.u.) and line/trafo loading to your maximum percent.
  6. Response: Return per-case results, summary, worst-case element arrays, and JSON-safe numeric values (NaN/Inf converted to null for the browser).

Prerequisites

  • Solvable base-case AC power flow (slack/external grid, connected topology).
  • Reasonable voltage and thermal limits for meaningful violation detection.
  • Valid bus vn_kv on every busbar (numeric kV).

Dialog parameters

These fields are sent as ContingencyAnalysisPandaPower Parameters in the POST body together with network elements (see development/API notes if you integrate programmatically).

Parameter Description Honoured in backend?
contingency_type N-1, N-2, or N-K (UI label) No (reserved; only N-1-style single outages run)
element_type line, transformer, generator, or all Yes
elements_to_analyze All, critical only, or selected only (UI) No (reserved; all matching in-service elements are used)
voltage_limits, thermal_limits Enable/disable voltage or thermal checks (true / false) Yes
min_vm_pu, max_vm_pu Bus voltage violation thresholds (per unit) Yes
max_loading_percent Line and transformer overload threshold (%) Yes
post_contingency_actions None, redispatch, load shedding, or both (UI) No (reserved)
analysis_mode Fast screening, detailed, or comprehensive (UI) No (reserved)
user_email Logged-in user (server logging) Yes

Outputs and JSON shape

The HTTP response is JSON (often gzip-compressed). Top-level keys:

Key Content
bus, line, transformer Arrays for the worst contingency (maximum violation count)—compact values for diagram colouring.
summary contingencies_analyzed, flat violations list, critical_contingencies (high-severity or non-convergent cases), total_violations, total_critical.
contingency_results Full per-case list: name, description, converged, optional error, violations (type, element, description, severity), and when converged bus_results / line_results / trafo_results.
error Present if the whole study failed (e.g. no cases, isolated buses, validation error).

Extracting results: Use contingency_results for complete audit trails and CSV export; use summary.critical_contingencies for quick screening; use top-level bus/line/transformer only for the worst-case view on the canvas.

Relationship to pandapower documentation

pandapower documents contingency workflows under Contingency analysis, including run_contingency and limit helpers. Electrisim follows the same physical idea (sequential AC PF after outages) but uses its own loop so the UI can evolve independently. For deeper algorithm options, refer to the official docs.

Limitations

  • Steady-state only—no transient or voltage stability assessment.
  • Each case removes one element; double or common-mode outages are not generated.
  • No automatic redispatch or load shedding after an outage.
  • Islanded or non-convergent cases are reported with converged: false and an error or convergence violation entry.
  • Large networks may produce many voltage violations per case when limits are tight; use the results dialog filters and CSV export rather than reading every violation in the UI.

Technical references

pandapower v3.3.2 — Contingency analysis · runpp

BESS Preliminary Design App menu: Simulate → BESS Studies → BESS Preliminary Design

pandapower

Guided early-design workflow for a utility-scale BESS at an HV point of connection. Enter a short set of project parameters, generate the plant single-line diagram, run predefined load-flow cases, check ratings, and compare plant P/Q capability at the POC with the grid-code Q band from the entered power factor. Aimed at pre-sales / solution-manager checks before detailed engineering.

Where to find it

Simulate → BESS Studies → BESS Preliminary Design.

When to use

  • Establish an initial HV-connected BESS configuration from POC P, power factor, voltages, and equipment ratings
  • Verify PCS, transformer, cable, and Battery DC Pmax ratings against named load-flow cases
  • Check P/Q capability at the POC at Umin / Unom / Umax, including internal losses and auxiliary load
  • See whether plant Q at full active power — rated discharge and rated charge — covers the required U–Q band from the entered power factor
  • See which element limits Q at each envelope point, and how OLTC tap moves internal voltages

How to run

  1. Open a blank diagram or the Utility-scale BESS (HV POC) template.
  2. Click Simulate → BESS Studies → BESS Preliminary Design.
  3. Enter POC active power Pn and the grid-code power factor. Q at the POC is Q = Pn × tan(acos(PF)) unless you tick Specify Q directly.
  4. Set PCS count and ratings, HV/MV transformer and OLTC, MV cables, string transformers (two-winding or optional three-winding skid), and auxiliary load. PCS MVA, Pmax, transformers, and cable kA are auto-sized from Pn, PF, unit count, Umin, aux, and topology until you type in a field. A typed rating is kept as entered (including in later sessions). Use Reset ratings to auto-size to hand every rating back to the auto-sizer. An amber note lists any entered rating below the auto-sized one, with the shortfall in %. Auto-sizing is deliberately conservative (margin for losses and for Q at Umin), so a plant a few per cent under it often still passes — the note is a pointer, not a verdict; the run decides. The note calls out separately a PCS whose MVA is below its own Pmax, because that nameplate clips P and is not a margin question. Set Plant voltage min/max (default 0.90–1.10 pu) for named-case pass/fail; this is separate from POC Umin/Umax. Optionally tick Tap position sweep. Wizard values are stored in the browser and on the POC bus so the next open keeps your last setup.
  5. Click Generate / Update SLD. The wizard hides so you can inspect the diagram; use the restore chip to return. Existing plant cells are updated in place (tagged bessPlantRole). PCS charge/discharge Pmax written to the diagram cannot exceed that unit’s MVA (a converter cannot pass more MW than Sn).
  6. Click Run Study. A progress log shows named cases, rating checks, and the P/Q envelope (and the tap sweep if you enabled it).
  7. Review the results (KPIs, named cases, P/Q and U–Q charts). Open Chart options to edit title, axis labels, and min/max scaling. Use + / − or the mouse wheel to zoom a characteristic, drag to pan, and Reset view to show the full envelope. Maximize the results window, or Maximize on each chart, for presenting. Click a named-case row or a point on the P/Q or U–Q chart to fill the SLD result boxes with that load-flow; click a limiter or bus name to select it on the canvas. Clicking outside the window or Minimize parks the dialog (it does not close). Export PDF Summary also minimizes the window, then opens the report metadata dialog.

Plant topology

External Grid → POC (HV bus, contractual grid connection) → optional HV cable → optional BESS_HV bus at the plant site → HV/MV transformer (OLTC) → MV collection bus → auxiliary load + N strings.

Untick Include HV/MV transformer when the POC is already at MV (about 11–33 kV). The external grid then connects directly to the collection bus, named POC_MV at the MV voltage. The HV transformer, OLTC, tap sweep, and HV cable are omitted. Named cases and the P/Q envelope use that MV bus as the POC.

Tick HV cable between grid POC and plant substation when the POC is at the DSO substation and the transformer sits at the customer site. Named cases and the P/Q envelope still refer to POC_HV; the voltage profile and rating table include the HV line and BESS_HV when present.

Each string: MV cable → MV/LV transformer → LV bus(es) → PCS inverter (the Storage element) → DC bus → battery rack. Optional three-winding skid: one MV winding and two 690 V windings, with 2 or 4 inverters per winding.

Main inputs

Input Description
Active power at POC / Pn Agreed POC active power. Named-case P setpoints are capped at this value (split across PCS units).
Grid-code power factor Default 0.95. Sets required |Q| at the POC: |Q| = Pn × tan(acos(PF)).
Reactive power at POC Filled from Pn and PF. Edit only if Specify Q directly is checked.
Umin / Unom / Umax POC voltage levels (pu) for named cases, the P/Q envelope, and the inner U–Q band at full active power. Defaults 0.95 / 1.00 / 1.05 pu. These are the study operating voltages at the grid, not the plant voltage pass band.
Plant voltage min / max Voltage allowance used for named-case pass/fail and SLD result-box colours. Default 0.90–1.10 pu, matching typical bus dialog min/max. Raise the max (for example 1.10 pu) if LV/MV buses may sit above the POC Umax of 1.05 pu.
Tap position sweep Optional. Off by default. When enabled, the study sweeps the HV/MV OLTC at rated discharge. In the results window the table is collapsed under Tap position impact.
PCS / Storage Unit count, MVA, charge/discharge Pmax, LV voltage. PCS, transformer, Pmax, and cable ratings auto-size from Pn, PF, unit count, Umin, aux, and two- versus three-winding topology so the PF |Q| rectangle still fits at Umin (for 50 MW, PF 0.95, 4 units this is about 21.3 MVA / 14.85 MW per PCS). Changing those drivers updates only the rating fields you have not typed in. A typed value is used exactly as entered and remembered in the saved draft. Reset ratings to auto-size clears those typed flags. Optional P–Q capability curve instead of a circular Sn limit.
Battery DC Pmax Tighter of PCS Pmax and this value is applied as the AC Storage P limit and listed in the rating table. It does not supply reactive power — Q comes from the PCS MVA circle. Matching Battery DC Pmax to PCS MW/MVA closes the converter circle at P = Sn; leftover Q at the POC is then transformer, cable, and aux, not the battery. Generate SLD places a PCS inverter, DC bus, and battery rack (Source DC) per string. Those DC elements are shown on the diagram; the AC load-flow does not solve a coupled DC network (isolated DC islands are not compatible with this plant model in pandapower 3.2).
HV cable to BESS site Optional. Inserts HV_Cable and bus BESS_HV between POC_HV and the plant HV/MV transformer. Length, R/X, and thermal kA (auto-sized from plant MVA and HV voltage like MV cables). Use when the agreed POC is not co-located with the BESS substation.
HV/MV transformer On by default. Rating, vk, OLTC tap range and voltage band. Untick Include HV/MV transformer for a direct MV POC (about 11–33 kV): the external grid connects to POC_MV and there is no HV transformer.
MV cables and string transformers Length, R/X, thermal rating; two-winding or three-winding skid (2 or 4 PCS per LV winding). String transformer MVA and cable kA default from the selected topology (one PCS per two-winding trafo, or all PCS on the skid for three-winding).
Auxiliary load P and Q on the MV collection bus (included in POC achieved P/Q).

What the study computes

  • Requested vs achieved P/Q at the POC — auxiliaries and internal losses included. POC sign is export-positive (P > 0 into the grid, Q > 0 capacitive).
  • Named load-flow cases at Umin, Unom, and Umax: twelve requested POC corners (export/import × capacitive/inductive at Pn and the entered PF), plus rated discharge and rated charge at unity PF — 18 screening load-flows, listed in the results table. |P| at the POC is capped at the Pn you entered. When OLTC is enabled, DiscreteTapControl runs during these load-flows.
  • Voltage profile through the plant and a rating table (worst-case loading vs nameplate for PCS, Battery DC Pmax, transformers, cables).
  • SLD result boxes filled from the selected named case (default Unom_Export_Capacitive): bus voltages, branch loading, transformer currents and tap, storage P/Q, aux P/Q, battery DC. POC and external-grid boxes stay export-positive and show the case name. Green / amber / red by voltage and loading limits.
  • P/Q capability envelope at the POC — a separate sweep from the 18 named cases: plant Qmax (capacitive, solid) and Qmin (inductive, dashed) vs the grid-code |Q| rectangle from the entered PF (grey band), from −Pn to +Pn (the contracted POC rating, not plant Pmax after losses). Default step is 25% Pn (9 P-points including 0) × two Q sides × three voltages ≈ 54 envelope nodes. Each node is one Qmax or Qmin operating point. When the PCS fleet can hold more than Pn, the sweep is carried past ±Pn with three more P points per direction, up to the plant P limit (per unit, the tighter of PCS MVA and Pmax / Battery DC Pmax) — up to 90 nodes, and a longer run. The Qmax and Qmin branches are then joined at the highest |P| by a dotted edge labelled “PCS P limit”, which closes the capability area. That edge is where the converter MVA circle is truncated by Pmax, so it is a real boundary, not a drawing shortcut: at the PCS the leftover Q is √(Sn² − Pmax²). That term is zero when a unit’s Pmax reaches its MVA, which is the “full circle” shape at the converter. The chart is at the POC, so a few Mvar of transformer, cable, and auxiliary Q usually remain even then — typically on the order of vk × S²/Sn for each transformer stage (a few Mvar on a ~25 MW plant, PF ≈ 0.99). That residual is not from the battery and cannot be cancelled by raising Battery DC Pmax: reactive power comes from the inverter, and at P = Sn the inverter has none left. To have Q headroom at full P, size PCS MVA above Pmax (the auto-sizer does this so the PF |Q| band still fits at Umin). A small reduction in P also frees √(Sn² − P²) and can bring POC Q to zero. Auto-sized ratings put MVA above Pmax, so with them the envelope always ends in a flat edge rather than a closed circle. Rated Charge/Discharge named cases are unity PF (PCS Q = 0) and sit inside the envelope, not on the Qmax/Qmin curves. The results window shows a COMPLIANT / NON-COMPLIANT badge, a KPI, and a per-voltage table: the plant is compliant when Qmax/Qmin cover that |Q| rectangle at Umin, Unom, and Umax. Charts are labelled with Pn, |Q|/Pn, PF corners, and import/export. Chart options lets you edit the title, axis labels, scaling, switch to P/Pn vs Q/Pn, and use grid-code axes (Q horizontal, P vertical). Wider gaps on the inductive (dashed) side are from the load-flow (absorbing Q drops plant voltage), not from axis scaling. Named cases are overlaid as squares (PF corners) and diamonds (rated P at PF = 1); click a circle, square, or diamond to open that load-flow on the SLD.
  • U–Q at full P (±Pn) — plant Qmax / Qmin at full active power versus POC voltage: filled markers at rated discharge (P = +Pn), open rings (white interior, coloured outline) at rated charge (P = −Pn). The chart legend shows a sample of each. The inner rectangle is Umin–Umax at the required |Q|/Pn from the grid-code power factor (|Q|/Pn = tan(acos(PF)); 0.95 → about 0.329). The hatched outer band is the plant voltage allowance (default 0.90–1.10 pu). Axis ticks include 0.90 / 0.95 / 0.96 / 1.04 / 1.05 / 1.10 and ±|Q|/Pn. The results window shows a COMPLIANT / NON-COMPLIANT badge, a KPI, and a per-voltage table with separate discharge and charge columns; the verdict needs both directions to cover the band. Wide markers mean the PCS MVA is large relative to Pn — at full P the Q headroom is √(Sn² − Pn²), so a PCS sized close to Pn gives a narrow U–Q plot. Click a marker to open that capacitive or inductive load-flow at that voltage.
  • Tap-position sweep — optional (wizard checkbox). HV/MV voltages and available Qmax/Qmin at each OLTC tap (rated discharge). Shown collapsed in the results window. n/a means the plant is already overloaded at Q = 0.
  • PDF summary — engineering report of the study results, including the U–Q at full P verdict. Export minimizes the results window so the diagram stays visible.

Results window

KPIs at the top include named-case pass/fail counts, requested POC target met, P/Q envelope, and U–Q at full P.

The Named load-flow cases table lists P/Q at the POC, losses, OLTC tap after that case, pass/fail, and the limiting element. Pass/Fail reports thermal and voltage limits only — it is not a check that the case reached Pn, so a Rated Discharge delivering 22.9 MW against a 23.5 MW Pn still passes when nothing is overloaded (the difference is losses and auxiliaries). Delivery of the requested POC P/Q is the separate POC target met KPI for the 12 target cases. Voltage pass/fail uses the plant voltage min/max you entered (default 0.90–1.10 pu), not POC Umin/Umax. Click any row to paint that load-flow onto the diagram result boxes (voltages, loadings, P/Q, tap), including LV buses. The selected row stays highlighted. Click a limiter or bus name to select that element.

Click a named-case marker on the P/Q capability envelope at POC (square = PF corner, diamond = rated P at unity PF) or a marker on U–Q at full P to open that named load-flow. Hover an envelope vertex for its P/Q/U; those nodes are the capability sweep, not the 18 named cases. The pointer becomes a hand on a named-case hit; the selected point is ringed. The results window parks so you can read the SLD boxes (use the restore chip to return).

  • P/Q chart — 18 named cases are plotted at their achieved POC P/Q. The 12 PF corners are squares (4 corners × Umin/Unom/Umax); the 6 Rated Charge/Discharge points are diamonds near the P axis (PCS Q = 0). The three voltages of one corner land on almost the same P/Q, so they are drawn concentric at different sizes (blue Umin smallest, green Unom, red Umax largest) at their exact P/Q — no marker is shifted off the ±Pn lines. Click the ring you want. Envelope circles are the 25% Pn Qmax/Qmin sweep, not the named cases.
  • U–Q chart — filled markers are Qmax / Qmin at rated discharge (P = +Pn); open rings are the same at rated charge (P = −Pn). Qmax is capacitive, Qmin inductive (for example Umin_Export_Inductive, Umin_Import_Inductive). Charge and discharge sit at slightly different Q when losses differ; if they coincide, the open ring is drawn on top of the filled marker.

Clicking outside the results window, or Minimize, parks the dialog so you can inspect the SLD and come back. Maximize fills the screen with the results window; each of P/Q capability envelope at POC and U–Q at full P also has its own Maximize for a full-screen chart (Restore or Esc returns). On both charts, + / − or the mouse wheel zoom toward the pointer, drag pans, and Reset view restores the full characteristic. Chart clicks work in the full-screen chart view as well. Close dismisses the study results.

If the requested POC P/Q was delivered but named cases still fail thermal or voltage limits, a note points to the limiter column (often an undersized MV cable). If every named case fails on PCS apparent power with Q near zero and the rating table shows PCS MVA smaller than PCS MW (for example 9.3 MVA / 14.8 MW), a leftover typed PCS rating is smaller than the auto-sized nameplate — use Reset ratings to auto-size, then Generate / Update SLD and re-run.

Sign convention

  • Storage (diagram / pandapower): p_mw > 0 = charge, p_mw < 0 = discharge.
  • POC results: export-positive. P > 0 delivers into the grid; Q > 0 is capacitive.

Notes

  • This is a preliminary load-flow module, not a substitute for detailed protection, short-circuit, or dynamic studies.
  • Battery DC Pmax is enforced as an AC Storage P cap and shown in the rating table. The battery does not provide Q; leftover Q at P = Sn is from transformers, cables, and aux. The SLD shows a PCS inverter, DC bus, and battery rack per string; the DC elements are not solved with the AC load-flow.
  • Re-run the study after editing any diagram parameter; you do not need to regenerate the SLD unless the topology changed.
  • U–Q at full P uses grid-code Pn and the entered PF (not a lower net P at the PCC). Default PF 0.95 is |Q|/Pn ≈ 0.329 at Umin, Unom, and Umax, checked at both rated discharge and rated charge.
  • Equipment ratings in the wizard are auto-sized from Pn, PF, unit count, Umin, aux, and string topology only until you type in a field. A value you enter is written to the diagram by Generate / Update SLD exactly as entered, and stays through later edits of the POC inputs and later sessions (saved in the browser and on the POC bus). Reset ratings to auto-size clears every typed-rating flag and refills the fields. An amber note names any entered rating below what this POC needs. PCS charge/discharge Pmax on the SLD cannot exceed that unit’s MVA.
  • The P/Q grey rectangle is drawn at the contracted POC Pn you entered. Plant envelope P after losses may fall short of +Pn on export or slightly exceed |Pn| on import; that is not a shifted axis. The envelope curve itself runs past ±Pn up to the plant P limit to close the capability area; U–Q at full P and the compliance verdicts still read the ±Pn points, not those closing points. Chart P is net P at the POC: N × unit MW at the PCS is not the same MW at the POC. Auxiliary load plus transformer and cable losses make the export tip lower (hover shows dispatch vs P_POC).
  • Leftover Q at the export/import tip: if PCS Pmax or Battery DC Pmax is below Sn, the PCS still has √(Sn² − Pmax²). If Pmax = Sn, the converters have no Q left; a few Mvar at the POC are then magnetizing and leakage Q in the HV/MV and string transformers (about vk × S²/Sn each) plus aux and cable X — not a battery shortfall. The battery cannot compensate that Q. To cancel it, either size Sn above Pmax so the inverters can inject/absorb vars at full P, or drop P slightly so √(Sn² − P²) covers the transformer Q. Grid-code PF 0.95 (|Q|/Pn ≈ 0.329) is far larger than this residual (often |Q|/P ≈ 0.12, PF ≈ 0.99), so it is not a compliance issue by itself.
  • The amber wizard note compares entered ratings with the auto-sized ones. Because auto-sizing carries margin, a rating under it is a caution, not a prediction — a study can be COMPLIANT with the note showing.
  • Plant voltage min/max is the named-case allowance. POC Umin/Umax remain the study voltages for envelope and U–Q compliance.

Related: Storage; Storage Q capability; Three Winding Transformer; Battery Sizing; Grid Code Compliance (P-Q).

Battery (BESS) sizing — POC busbar P/Q targets App menu: Battery Sizing for Busbar Requirements

pandapower

This study sizes the electrical P/Q the BESS must provide so the point of coupling (POC) bus meets a target P (MW) and Q (Mvar). It answers “how hard must the battery work for this schedule?” — not switchgear ampacity.

Where to find it

Simulate → Battery Sizing for Busbar Requirements (pandapower).

Not physical busbar rating

Electrisim does not compute switchgear or busbar conductor ratings (thermal withstand, IEC 61439). Use a separate equipment study for ampacity.

When to use

  • BESS P/Q needed to meet a POC schedule
  • Comparing load-supply, export, and reactive-support targets

How to run

  1. Model the POC bus, grid connection, and the BESS (Storage or BESS AC Block).
  2. Click Simulate → Battery Sizing for Busbar Requirements.
  3. Set the POC bus and target P/Q, then run.
  4. Read the required BESS P and Q and whether the target was reached.
How the sizing loop works

An Electrisim proportional controller adjusts BESS P and Q, running load flow each iteration, until the POC P/Q is within tolerance (or the iteration limit is hit). The first guess includes a small loss overhead.

Dialog parameters

Parameter Description Type Value Range Default
Storage Selection Select the Battery/Storage element in the network to be sized dropdown Available storage elements -
POC Busbar Point of Coupling busbar where target P/Q should be achieved (typically connected to external grid) dropdown Available busbars -
Calculation Mode Select between "Single Target at POC" or "Multiple Scenarios" radio single, multiple single
Target P (MW) Target active power at POC in MW
Positive = consumption from grid, Negative = generation to grid
number Any real number 10.0
Target Q (Mvar) Target reactive power at POC in Mvar
Positive = inductive (lagging), Negative = capacitive (leading)
number Any real number 5.0
Convergence Tolerance Convergence criterion in MW/Mvar - algorithm stops when both P and Q errors are below this value number > 0 0.001
Max Iterations Maximum number of control loop iterations before stopping integer 1-200 50
Proportional Gain (P) Proportional gain for active power control loop number > 0 0.5
Proportional Gain (Q) Proportional gain for reactive power control loop number > 0 0.5
Frequency System frequency (50 Hz or 60 Hz) radio 50, 60 50 Hz
Algorithm Power flow algorithm to use radio nr, iwamoto_nr, bfsw Newton-Raphson (nr)

Multiple Scenarios Mode

When selecting "Multiple Scenarios" mode, you can evaluate five different operational scenarios simultaneously. Each scenario has editable target P and Q values:

Scenario Default P (MW) Default Q (Mvar) Typical Use Case
Load Supply 15.0 8.0 BESS supplying load demand with inductive reactive power
Power Export -20.0 -5.0 BESS exporting power to grid with capacitive reactive power
Reactive Support 0.0 10.0 BESS providing only reactive power support (voltage regulation)
Capacitive Support 5.0 -8.0 BESS providing active power and capacitive reactive power
Balanced 10.0 5.0 Balanced active and reactive power scenario

All scenario values are editable before running the calculation. The results show the required BESS power for each scenario separately, allowing you to determine the maximum BESS capacity needed across all scenarios.

Output Results

For each scenario (or single target), the results include:

Output Parameter Description Unit
Required BESS Power (P) Active power output required from BESS
Negative = discharging (generation), Positive = charging (consumption)
MW
Required BESS Power (Q) Reactive power output required from BESS
Positive = inductive, Negative = capacitive
Mvar
Apparent Power (S) Total apparent power required: S = √(P² + Q²) MVA
Achieved P at POC Actual active power achieved at Point of Coupling after BESS control MW
Achieved Q at POC Actual reactive power achieved at Point of Coupling after BESS control Mvar
Error P Difference between target and achieved active power at POC MW
Error Q Difference between target and achieved reactive power at POC Mvar
Converged Whether the algorithm converged within tolerance Yes/No
Iterations Number of control loop iterations performed integer

API payloads and result extraction

The browser POSTs the diagram JSON plus a sibling object bess_sizing_params with typ: "BessSizingPandaPower", carrying storageId, pocBusbarId, targets, tolerances, gains, frequency, algorithm, and optional scenarios when running multi-case mode.

Single target response (JSON): bess_p_mw, bess_q_mvar, bess_s_mva, achieved_p_mw, achieved_q_mvar, error_p_mw, error_q_mvar, converged, iterations, or an error string when sizing cannot proceed.

Multiple scenarios response: { "calculationMode": "multiple", "scenarios": [ ... ] } where each scenario echoes the input targets and the same numeric keys as the single-mode payload.

Visualization (Multiple Scenarios Only)

When running multiple scenarios, the results include two visualization plots:

  1. POC P–Q (Target vs Achieved) Plot: Shows a scatter plot comparing target and achieved P/Q values at the Point of Coupling. Blue circles represent target values, green circles represent achieved values. Dashed lines connect target-achieved pairs for each scenario.
  2. Required BESS P–Q Plot: Shows a scatter plot of the required BESS active and reactive power for each scenario. Green circles represent the calculated BESS requirements.

Both plots include grid lines, axis labels, and scenario name annotations for easy identification.

Algorithm Details

The sizing algorithm implements a proportional controller with the following characteristics:

  • Initial Guess: initial_p = -target_p_mw × 1.05 and initial_q = -target_q_mvar × 1.05. The negative sign accounts for the fact that BESS must discharge (negative P from BESS perspective) to supply positive power at POC, and the 1.05 factor accounts for losses.
  • Control Loop: Uses proportional control with damping factor of 0.5 to prevent oscillations:
    • delta_p = -kp_p × error_p × damping
    • delta_q = -kp_q × error_q × damping
  • Sign Convention:
    • At POC: Positive P = consumption from grid, Negative P = generation to grid
    • For BESS: Negative P = discharging (generation), Positive P = charging (consumption)
  • Convergence: Algorithm converges when |error_p| < tolerance AND |error_q| < tolerance

Limitations and Considerations

Important Notes:

  • The algorithm may not converge if the target P/Q values are outside the BESS capability limits
  • Network losses are automatically accounted for in the calculation
  • For time-series analysis (state-of-charge tracking), additional energy capacity parameters are required
  • This sizing calculation is for steady-state power flow and does not consider dynamic behavior
  • If convergence fails, try increasing max iterations, adjusting proportional gains, or checking if targets are feasible

Technical References

Based on: pandapower control framework with custom BESS control controller implementation.

Algorithm Type: Iterative proportional control with Newton-Raphson power flow solver.

Documentation References: 📘 pandapower Control Documentation 📘 pandapower Storage Element

Related studies: BESS Dispatch Reversal; BESS Preliminary Design; Storage Q capability.

BESS Dispatch Reversal App menu: Simulate → BESS Studies → BESS Dispatch Reversal

OpenDSS

Time-domain P-step (charge ↔ discharge) on a selected Storage unit, co-simulated with OpenDSS. Use it to check POC voltage during FCR / primary-market reversals (for example +45 MW → −45 MW in 10 s). Plots are V(t), P(t), and Q(t). Sign convention matches Storage: +P charge, −P discharge; +Q absorb, −Q inject.

Where to find it

Simulate → BESS Studies → BESS Dispatch Reversal (also on the frequency-study menu).

When to use

  • Voltage overshoot / undershoot while active power reverses through P = 0
  • Whether the PCS P–Q envelope, watt priority, or voltage-dependent Q changes the Q(t) and V(t) traces
  • IEEE 1547-style inverter dynamics (OpenDER) versus a snapshot OpenDSS-only ramp

How to run

  1. Configure the Storage: ratings (sn_mva, Pmax), Q capability, and Inverter Control (PF / Volt-VAR / watt priority).
  2. Click Simulate → BESS Studies → BESS Dispatch Reversal.
  3. Select the Storage and the POC bus (plant HV / grid connection — not the External Grid slack bus).
  4. Set start/end P, hold and ramp times, voltage limits (default 0.98–1.02 pu), and Q source (below).
  5. Choose OpenDER + OpenDSS (IEEE 1547 inverter, recommended) or OpenDSS only.

Reactive power during the ramp

The Storage Use Q capability curve and Voltage-dependent Q envelope checkboxes define the PCS envelope. They change V(t)/Q(t) only when Q is taken from that envelope, or when a non-unity PF / Volt-VAR setpoint hits the limit. Unity PF with inverter Q stays at Q ≈ 0.

Q source What is dispatched
Storage inverter settings Fixed PF, manual q_mvar, or OpenDER Volt-VAR. Envelope only clips Q.
Q capability — inject max Q = Qmin from the P–Q curve at the current P (and U if voltage-dependent). Default when the curve is enabled. Use this to see the envelope on the Q plot.
Q capability — absorb max Q = Qmax from the curve (absorb).

Results show dashed Qmin/Qmax on the Q(t) chart. P command is thick dashed orange under the BESS P trace. Choose the plant HV POC; a slack/source bus stays almost flat at 1.0 pu.

Related: Storage, Battery Sizing, BESS Preliminary Design. OpenDER: EPRI OpenDER.

Elements

Use this catalog to see which palette elements work with pandapower and OpenDSS. Click a name to open its parameter reference. Build the diagram first, then run a study from Simulation.

How to read this table
  • Available — The element maps to a native object in that engine.
  • Indirect — No native object; similar behaviour is possible with other elements (see the note in parentheses).
  • Not available — That engine cannot represent this element. Electrisim warns if such elements are on the diagram when you pick that engine.
Element Pandapower OpenDSS
Bus ✅ Available ✅ Available
Line ✅ Available ✅ Available
Load ✅ Available ✅ Available
Generator ✅ Available ✅ Available
Static Generator ✅ Available 🟡 no direct element (can be implemented by setting the Generator parameters)
Wind Turbine ✅ Available (as Static Generator / sgen; P from power curve) ✅ Available (as Generator; P from power curve)
Wind Turbine Controller (steady-state) ✅ Available (Pref for load flow) ✅ Available (Pref for load flow; not an OpenDSS control object)
Wind Turbine Controller (dynamic) ✅ Stored for time-domain (not applied in snapshot LF) ✅ Stored for time-domain (not applied in snapshot LF)
Park Controller (steady-state) ✅ Available (station Q/V/PF/tanφ via BinarySearchControl) ❌ Not Available
RegControl ❌ Not Available ✅ Available
CapControl ❌ Not Available ✅ Available
StorageController ❌ Not Available ✅ Available
Asymmetric Static Generator ✅ Available 🟡 no direct element (can be implemented by setting the Generator parameters)
External Grid ✅ Available ✅ Available (Vsource)
Transformer ✅ Available ✅ Available
Capacitor (shunt capacitor bank) ✅ Available ✅ Available
Shunt Reactor ✅ Available ✅ Available (Reactor)
Impedance ✅ Available ✅ Available
Storage ✅ Available ✅ Available
Protection relay 🟡 annotation only (visual element, not simulated) 🟡 annotation only (visual element, not simulated)
Fuse 🟡 annotation only (visual element, not simulated) 🟡 annotation only (visual element, not simulated)
Thyristor-Controlled Series Capacitor (TCSC) ✅ Available ❌ Not Available
Switch ✅ Available ✅ Available
Three Winding Transformer ✅ Available ✅ Available (Transformer with 3 windings)
Asymmetric Load ✅ Available 🟡 no direct element (can be implemented by setting the parameters of Load)
Motor ✅ Available 🟡 no direct element (can be implemented by setting the parameters of Load)
Ward ✅ Available 🟡 no direct element (can be implemented by modelling PQ+shunt)
Extended Ward ✅ Available 🟡 no direct element (can be implemented by modelling PV+PQ+shunt)
DC line ✅ Available ❌ Not Available
Voltage Source Converter (VSC) ✅ Available ❌ Not Available
Static Var Compensator (SVC) ✅ Available 🟡 no direct element (can be implemented by modelling Capacitor + Reactor+CapControl)
Static Synchronous Compensator STATCOM (SSC) ✅ Available 🟡 no direct element (can be implemented by modelling Generator+InvControl)
DC Bus ✅ Available ❌ Not Available
Load DC ✅ Available ❌ Not Available
Source DC ✅ Available ❌ Not Available
Back-to-Back Voltage Source Converter (B2B VSC) ✅ Available ❌ Not Available
BESS AC Block (composite) 🟡 composite (Bus + Transformer + Storage — all native in pandapower) 🟡 composite (Bus + Transformer + Storage — all native in OpenDSS)
Load 1ph ❌ Not Available ✅ Available
Source 1ph ❌ Not Available ✅ Available
Generator 1ph ❌ Not Available ✅ Available
Line 1ph ❌ Not Available ✅ Available
Transformer 1ph ❌ Not Available ✅ Available
PVSystem 🟡 no direct element (can be approximated using a Static Generator) ✅ Available
Unified power flow controller (UPFC) 🟡 no direct element (can be implemented by modelling SSC + VSC or DC line) 🟡 no direct element (approximate with VSC, Generator+InvControl, or series elements)

Below you will find detailed information about each element, including all configurable parameters, their data types, value ranges, the corresponding OpenDSS property names, and which simulation types use each parameter.

Element Details

This is the parameter lexicon: names match the Electrisim element dialogs. For how to run a study, go back to Simulation. In the parameter tables, the Simulation Types column uses the following abbreviations:

Simulation type abbreviations:

  • PF — Power Flow (Load Flow)
  • SC — Short Circuit
  • OPF — Optimal Power Flow
  • MS — Motor Starting
  • Harmonics — Harmonic Analysis (OpenDSS)

Parameter importance:

  • 🔴 Required — must be specified for the simulation to run
  • 🟡 Recommended — important for accurate results
  • 🟢 Optional — enhances functionality but has sensible defaults

Bus

pandapower OpenDSS

A bus is a connection point (node / busbar). Every other element must attach to at least one bus. Load-flow results show voltage magnitude and angle here — so set rated voltage (vn_kv) correctly before you run anything. The same result box also shows net bus P and Q; see On-diagram busbar results for the sign convention and how several generators or BESS units on one busbar are aggregated.

Documentation References: 📘 pandapower Bus 📗 OpenDSS Documentation

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name User-defined name for the bus (optional). Used in result summaries and tables (e.g. OpenDSS harmonic analysis) so you can identify nodes by project labels, not only internal IDs. string - Bus name 🔴 PF, SC, OPF, Harmonics
vn_kv Rated voltage in kV float > 0 kVBase 🔴 PF, SC, OPF
type Bus type (b = busbar, n = node, m = muff) string b, n, m - 🟡 PF, SC, OPF
max_vm_pu Maximum voltage magnitude in per unit — enforced as net.bus.max_vm_pu in AC OPF (pandapower). Set on the Bus dialog OPF tab; new buses default to 1.1 p.u. float > 0 - 🔴 OPF
min_vm_pu Minimum voltage magnitude in per unit — enforced as net.bus.min_vm_pu in AC OPF (pandapower). Set on the Bus dialog OPF tab; new buses default to 0.9 p.u. float > 0 - 🔴 OPF
in_service Specifies if the bus is in service boolean True/False enabled 🟡 PF, SC, OPF

OPF note: Bus min_vm_pu / max_vm_pu are sent to the pandapower backend with each study. If limits are missing or inconsistent (e.g. max ≤ min) on a bus, Electrisim substitutes a wide 0.8–1.2 p.u. band for that bus only so AC OPF can converge on stressed networks.

Line

pandapower OpenDSS

Draw a Line as an edge between two buses (it is not a palette shape). Enter length and impedance, or keep the defaults for a first test. Use this for cables and overhead lines; use Impedance when you only have R and X between two buses.

UI defaults on drop: length_km 1, type cs (cable), endtemp_degree 250 °C, zero-sequence r0_ohm_per_km/x0_ohm_per_km 0.1 Ω/km, parallel 1, df 1.

Documentation References: 📘 pandapower Line 📗 OpenDSS Line

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the line string - name 🔴 PF, SC, OPF
from_bus Starting bus integer - Bus1 🔴 PF, SC, OPF
to_bus Ending bus integer - Bus2 🔴 PF, SC, OPF
length_km Line length in kilometers float > 0 Length 🔴 PF, SC, OPF
r_ohm_per_km Resistance per kilometer (Ω/km) float ≥ 0 R1 🔴 PF, SC, OPF
x_ohm_per_km Reactance per kilometer (Ω/km) float ≥ 0 X1 🔴 PF, SC, OPF
c_nf_per_km Capacitance per kilometer (nF/km) float ≥ 0 C1 🟡 PF, SC, OPF
g_us_per_km Dielectric conductance per kilometer (μS/km) float ≥ 0 - 🟡 PF, SC, OPF
max_i_ka Maximum thermal current (kA) float > 0 normamps 🔴 PF, OPF
r0_ohm_per_km Zero-sequence resistance per kilometer (Ω/km) float ≥ 0 R0 🟡 SC
x0_ohm_per_km Zero-sequence reactance per kilometer (Ω/km) float ≥ 0 X0 🟡 SC
c0_nf_per_km Zero-sequence capacitance per kilometer (nF/km) float ≥ 0 C0 🟡 SC
type Type of line ("ol" for overhead, "cs" for cable) string ol, cs - 🟡 PF, SC, OPF
parallel Number of parallel lines integer ≥ 1 - 🟢 PF, SC, OPF
df Derating factor (applies to max_i_ka) float 0-1 - 🟢 PF, SC, OPF
max_loading_percent Optional maximum thermal loading in percent of rating for AC OPF only (pandapower line.max_loading_percent). Use 0 or leave unset for no OPF thermal limit on this branch. Edit on the line dialog OPF tab or in the Component Data grid (Line tab). float ≥ 0 - 🔴 OPF
endtemp_degree End temperature of the line in °C (used for temperature-dependent resistance correction in short-circuit calculations) float > 0 - 🟢 SC
in_service Specifies if the line is in service boolean True/False enabled 🟡 PF, SC, OPF

Load

pandapower OpenDSS

A load is demand at a bus (P and Q). Use constant power unless you have a reason for constant current or impedance. This is the usual way to model customers, motors-as-PQ, and plant auxiliaries.

Documentation References: 📘 pandapower Load 📗 OpenDSS Load

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the load string - name 🔴 PF, SC, OPF
bus Bus the load is connected to integer - Bus1 🔴 PF, SC, OPF
p_mw Active power consumption in MW float - kW 🔴 PF, SC, OPF
q_mvar Reactive power consumption in Mvar float - kvar 🟡 PF, SC, OPF
const_z_percent Percentage of constant impedance load float 0-100 %Z 🟢 PF, SC, OPF
const_i_percent Percentage of constant current load float 0-100 %I 🟢 PF, SC, OPF
sn_mva Rated apparent power in MVA float > 0 kVA 🟡 PF, SC, OPF
scaling Scaling factor for power values float > 0 - 🟡 PF, SC, OPF
type Connection type: "wye" (wye/star) or "delta" string wye, delta conn 🟡 PF, SC, OPF
in_service Specifies if the load is in service boolean True/False enabled 🟡 PF, SC, OPF

Harmonic Parameters (OpenDSS):

These parameters are used when running harmonic analysis with the OpenDSS engine. They define how the load injects harmonic currents and how the harmonic-frequency impedance of the load is represented. See also the Harmonic Analysis section for spectrum modes and workflow.

Parameter Description Type Value Range OpenDSS Property Simulation Types
spectrum Harmonic current spectrum selection from the Harmonic tab: Default uses OpenDSS built-in defaultload; Linear uses a defined decaying spectrum (approximately 100/h % magnitude on odd orders 3,5,7,11,13); Custom uses spectrum_csv; None disables harmonic injection from this load. string defaultload, Linear, custom, none spectrum 🟡 Harmonics
spectrum_csv One row per harmonic: order, magnitude_percent, angle_deg (comma-separated). Used when spectrum mode is Custom. Magnitudes are in percent of fundamental current. string (CSV) - New Spectrum.* + spectrum 🟢 Harmonics
pctSeriesRL Percent of load modeled as series R–L branch for harmonics (OpenDSS %SeriesRL). 100% is typical for many studies; lower values emphasize the parallel branch. See EPRI Harmonics Load Modeling. float 0–100 %SeriesRL 🟡 Harmonics
conn Wye or delta connection for the harmonic load model (can differ from the load flow connection type type when you need a specific harmonic representation). string wye, delta conn 🟡 Harmonics
puXharm Per-unit reactance of the load at harmonic frequency when the series R–L model is used; leave 0 to let OpenDSS derive behavior from %SeriesRL and XRharm. float ≥ 0 puXharm 🟢 Harmonics
XRharm X/R ratio for the harmonic branch (often taken in the 3–7 range for equipment studies). float > 0 XRharm 🟢 Harmonics

Motor

pandapower OpenDSS

An asynchronous motor. Use it when you need locked-rotor inrush for Motor Starting or a motor contribution in short-circuit. In OpenDSS it is mapped through a Load equivalent, not a native motor object.

Documentation References: 📘 pandapower Motor 📗 OpenDSS Motor

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the motor string - name 🔴 PF, SC, OPF
bus Bus the motor is connected to integer - Bus1 🔴 PF, SC, OPF
pn_mech_mw Rated mechanical power in MW float > 0 HP (converted) 🔴 PF, SC, OPF
vn_kv Rated voltage in kV float > 0 kV 🔴 PF, SC, OPF
cos_phi Power factor (lagging) float 0-1 pf 🟡 PF, SC, OPF
efficiency_percent Efficiency in percent at current loading float 0-100 %Eff 🟡 PF, SC, OPF
efficiency_n_percent Rated efficiency in percent at nominal conditions float 0-100 %EffRated 🟢 PF, SC, OPF
loading_percent Current loading in percent of rated power float 0-100 %LoadMW 🟡 PF, SC, OPF
scaling Scaling factor for power float > 0 - 🟡 PF, SC, OPF
lrc_pu Locked rotor current in per unit for short-circuit and motor starting float > 0 LRC 🔴 SC, MS
rx R/X ratio for short-circuit / locked-rotor impedance float ≥ 0 R/X 🔴 SC, MS
Hm Inertia constant (s) for dynamic motor starting (ANDES Motor3) float > 0 - 🟢 MS (dynamic)
tm_c1 / tm_c2 / tm_c3 Mechanical load torque coefficients for dynamic starting float - - 🟢 MS (dynamic)
in_service Specifies if the motor is in service boolean True/False enabled 🟡 PF, SC, OPF, MS

Asymmetric Load

pandapower OpenDSS

Asymmetric loads allow modeling of unbalanced three-phase loads where each phase can have different power consumption. This is particularly useful for distribution network analysis.

Documentation References: 📘 pandapower Asymmetric Load 📗 OpenDSS Load

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the asymmetric load string - name 🔴 PF, SC, OPF
bus Bus the load is connected to integer - Bus1 🔴 PF, SC, OPF
p_a_mw, p_b_mw, p_c_mw Active power per phase in MW (phases A, B, C) float - kW (per phase) 🔴 PF, SC, OPF
q_a_mvar, q_b_mvar, q_c_mvar Reactive power per phase in Mvar (phases A, B, C) float - kvar (per phase) 🟡 PF, SC, OPF
sn_mva Rated apparent power in MVA float > 0 kVA 🟡 PF, SC, OPF
scaling Scaling factor for power values float > 0 - 🟡 PF, SC, OPF
type Connection type (wye or delta) string wye, delta conn 🟡 PF, SC, OPF
in_service Specifies if the load is in service boolean True/False enabled 🟡 PF, SC, OPF

Static Generator

pandapower OpenDSS

Static generators represent generators with static (PQ) behavior — for example photovoltaic systems or small generation units. For wind turbines with an editable P–v power curve, prefer the dedicated Wind Turbine element. In OpenDSS, a static generator is a Generator with Model=1 (constant kW and kvar), not a voltage-controlled Model=3 bus. Both static generators and wind turbines can be selected in Grid Code Compliance (P-Q).

Documentation References: 📘 pandapower Static Generator 📗 OpenDSS Generator

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the static generator string - name 🔴 PF, SC, OPF
bus Bus the generator is connected to integer - Bus1 🔴 PF, SC, OPF
p_mw Active power generation in MW float - kW 🔴 PF, SC, OPF
q_mvar Reactive power generation in Mvar float - kvar 🟡 PF, SC, OPF
sn_mva Rated apparent power in MVA float > 0 kVA 🟡 PF, SC, OPF
type Type of generator (e.g., PV, wind, CHP) string - - 🟡 PF, SC, OPF
controllable Whether the generator is controllable boolean True/False - 🔴 OPF
scaling Scaling factor for power float > 0 - 🟡 PF, SC, OPF
k Factor for short-circuit calculation (typically 1.1) float > 0 - 🟡 SC
rx R/X ratio for short-circuit impedance float ≥ 0 R/X 🔴 SC
generator_type Generator type for short-circuit (current_source, async, doubly_fed) string - - 🟡 SC
lrc_pu Locked rotor current in per unit for short-circuit float > 0 LRC 🟡 SC
max_ik_ka Maximum short-circuit current in kA float > 0 - 🟡 SC
current_source Whether generator acts as current source for short-circuit boolean True/False - 🟡 SC
kappa Factor for peak short-circuit current (typically 1.5) float > 0 - 🟡 SC
in_service Specifies if the generator is in service boolean True/False enabled 🟡 PF, SC, OPF

Wind Turbine

pandapower OpenDSS

A dedicated wind generation element based on the Static Generator model. Active power for load flow is always derived from a wind power curve P(v) and the configured wind speed — you do not set p_mw independently. Changing wind speed (in the element dialog or in Component Data) updates P [MW] immediately from the curve.

How load flow uses it: Electrisim interpolates the curve at the current wind speed (linear segments or constant/stepwise between knots) and sends the resulting p_mw to the engine. In pandapower this is a Static Generator (sgen). In OpenDSS it is a Generator with Model=1 (constant kW and kvar — a PQ injection, matching pandapower sgen), not Model=3 (constant kW / constant kV). Vminpu is kept wide so collector undervoltage does not convert the unit to constant-Z and collapse P. Reactive power and other Static Generator parameters (ratings, short-circuit data, ANDES dynamics kind, etc.) work the same way as on a Static Generator. Wind turbines can be selected together with static generators in Grid Code Compliance (P-Q).

Do you need a Wind Turbine Controller? For a normal snapshot load flow, no — the turbine already computes P from its own curve and speed. Use a Wind Turbine Controller (steady-state) only if you want a separate Pref override (controller wind speed or controller curve). Use a Wind Turbine Controller (dynamic) for averaging / gradient limiting in time-domain studies.

Palette: Sources (or Electrical abstract sources) → Wind Turbine. A worked example is File → New → offshore wind farm 1 GW (rev 6; 100 km export).

Documentation References: 📘 pandapower Static Generator 📗 OpenDSS Generator

Wind-specific parameters

In addition to the usual Static Generator fields, the Wind Turbine dialog provides:

Parameter Description Type Value Range Simulation Types
wind_speed_ms Hub-height wind speed used with the power curve to set active power. Editing this value recalculates p_mw from the curve in the Power tab and in Component Data. float ≥ 0 m/s 🔴 PF
wind_power_curve_json Editable P(v) table (wind speed [m/s] vs active power [MW]), edited via table + live plot in the Power tab. Built-in templates: 2.5 MW onshore, 3.3 MW onshore, 15 MW offshore (replace with OEM data for project work). JSON array points {v_ms, p_mw} 🔴 PF
wind_curve_approx Interpolation between table knots string linear or constant 🔴 PF
p_mw Active power from the curve at wind_speed_ms (read-only; updated automatically when speed, curve, or interpolation changes; also overwritten before each load flow) float — 🔴 PF, SC, OPF
q_setpoint_mode Load-flow Q: manual uses q_mvar; capacitive_max uses Qmax from the capability curve (overexcited / injects Q); inductive_max uses Qmin (underexcited / absorbs Q). Requires Use Q capability curve. string manual, capacitive_max, inductive_max 🔴 PF

Default dynamics plant kind is WIND for ANDES studies when renewable/IBR models are used.

Q capability (voltage-dependent, P and U)

The Wind Turbine Q capability tab defines reactive limits Qmin/Qmax as a function of both active power P and terminal voltage U (voltage-dependent Q limits). Enable Use Q capability curve so load flow applies the limits (pandapower enforce_q_lims and optional capacitive/inductive Q setpoint).

Configuration: choose limits in p.u. of Sn or MW/Mvar, optionally Consider voltage dependent limits, and scale min/max with the Operational Limits factors (%). Use a built-in template (below) or paste OEM matrices.

Axes: rows are voltage levels [p.u.]; columns are P-setpoints (p.u. or MW). Two matrices hold Qmax (overexcited / capacitive — the plant injects Q) and Qmin (underexcited / inductive — the plant absorbs Q) at every (U, P) knot. The P–Q plot shows one envelope per voltage.

Load flow: the engine bilinearly interpolates Q(P, U). Before bus voltages exist, U = 1.0 p.u. is used. After a voltage solution (and in the Park Controller), the terminal vm_pu is used. A flattened U=1.0 slice is also stored as the 1D P–Q table for pandapower’s native characteristic.

Built-in Q capability templates (stored in p.u. of Sn; confirm against OEM data):

  • FRC WTG P–U (voltage-dependent) — PowerFactory type Fully Rated Converter WTG 2.5MW 50Hz: Q vs P and U. Default for new turbines (Q = 0 at P = 0; about ±0.44 p.u. Q at U = 1.0 and moderate P; Qmax shrinks at high voltage while Qmin stays near −0.44 p.u.).
  • ±0.95 PF vs P (1D, U = 1.0 p.u.) — |Q| ≈ P·tan(arccos(0.95)) at each P; single voltage row. Same shape as the Static Generator 15 MW template, scaled to this turbine Sn.
  • 15 MW offshore 1·Un chart (1D) — digitized manufacturer-style P–Q envelope at 1.0 p.u. voltage (asymmetric import/export).

Asymmetric Static Generator

pandapower OpenDSS

Asymmetric static generators allow modeling of unbalanced generation where each phase can produce different power levels.

Documentation References: 📘 pandapower Asymmetric Static Generator 📗 OpenDSS Generator

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the asymmetric generator string - name 🔴 PF, SC, OPF
bus Bus the generator is connected to integer - Bus1 🔴 PF, SC, OPF
p_a_mw, p_b_mw, p_c_mw Active power per phase in MW (phases A, B, C) float - kW (per phase) 🔴 PF, SC, OPF
q_a_mvar, q_b_mvar, q_c_mvar Reactive power per phase in Mvar (phases A, B, C) float - kvar (per phase) 🟡 PF, SC, OPF
type Connection type (wye or delta) string wye, delta conn 🟡 PF, SC, OPF
in_service Specifies if the generator is in service boolean True/False enabled 🟡 PF, SC, OPF

External Grid

pandapower OpenDSS

The external grid represents the connection to a higher voltage level or an infinite bus. It serves as the slack bus in power flow calculations and provides the voltage reference.

Short Circuit tab

Double-click the External Grid and open the Short Circuit tab. Positive-sequence strength is s_sc_max_mva / s_sc_min_mva with R/X ratios rx_max / rx_min. Zero-sequence ratios are required for IEC 60909 single-phase faults:

  • Maximum case: Max R0/X0 Ratio (r0x0_max) and Max X0/X Ratio (x0x_max).
  • Minimum case: Min R0/X0 Ratio (r0x0_min) and Min X0/X Ratio (x0x_min). Three-phase and two-phase minimum studies do not use these columns; single-phase minimum does.

If min zero-sequence ratios are omitted on an older diagram, Electrisim reuses the corresponding max ratios. Typical pandapower example values when no utility data is available: R0/X0 = 0.1, X0/X = 1.0. Related study: Short Circuit.

Documentation References: 📘 pandapower External Grid 📗 OpenDSS Vsource

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the external grid string - name 🔴 PF, SC, OPF
bus Bus the external grid is connected to integer - Bus1 🔴 PF, SC, OPF
vm_pu Voltage magnitude setpoint in per unit float > 0 pu (Vsource) 🔴 PF, SC, OPF
va_degree Voltage angle in degrees float -360 to 360 angle 🟡 PF, SC, OPF
s_sc_max_mva Maximum short-circuit apparent power in MVA float > 0 MVAsc3 🔴 SC
s_sc_min_mva Minimum short-circuit apparent power in MVA float > 0 MVAsc1 🟡 SC
rx_max Maximum R/X ratio for positive sequence short-circuit float ≥ 0 R1/X1 🔴 SC
rx_min Minimum R/X ratio for positive sequence short-circuit float ≥ 0 R1/X1 🟡 SC
r0x0_max Max R0/X0 Ratio on the Short Circuit tab. Zero-sequence R0/X0 for IEC 60909 single-phase maximum short-circuit. float ≥ 0 R0/X0 🟡 SC
x0x_max Max X0/X Ratio on the Short Circuit tab. Zero- to positive-sequence reactance ratio (X0/X1) for IEC 60909 single-phase maximum short-circuit. Typical value 1.0. float ≥ 0 X0/X1 🟡 SC
r0x0_min Min R0/X0 Ratio on the Short Circuit tab. Zero-sequence R0/X0 for IEC 60909 single-phase minimum short-circuit. Required by pandapower for that case; if omitted, Electrisim copies r0x0_max. float ≥ 0 R0/X0 🟡 SC
x0x_min Min X0/X Ratio on the Short Circuit tab. Zero- to positive-sequence reactance ratio (X0/X1) for IEC 60909 single-phase minimum short-circuit. Required by pandapower for that case; if omitted, Electrisim copies x0x_max. Typical value 1.0. float ≥ 0 X0/X1 🟡 SC
spectrum Harmonic voltage spectrum for OpenDSS harmonic analysis (e.g., "defaultvsource") string defaultvsource, none, custom spectrum (Vsource) 🟡 Harmonics
cost_per_unit_by_currency Cost per unit for economic analysis (in selected currency) float ≥ 0 - 🟢 Economic
in_service Specifies if the external grid is in service boolean True/False enabled 🟡 PF, SC, OPF

Transformer

pandapower OpenDSS

Transformers connect different voltage levels in the network. They can be equipped with tap changers for voltage regulation.

Schematic Labels: Each transformer terminal can display a custom label on the canvas symbol (e.g. "HV", "LV"). These labels are purely cosmetic — they help identify which winding connects to which bus on the schematic, but do not affect simulation parameters or solver data. Edit them in the Schematic tab of the transformer dialog. Changes appear immediately on the canvas.

Documentation References: 📘 pandapower Transformer 📗 OpenDSS Transformer

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the transformer string - name 🔴 PF, SC, OPF
term_label_0 Schematic label for port 0 (HV bus / first connection). Display only — shown on the canvas symbol near the HV terminal pin. Does not affect simulation. string any text - -
term_label_1 Schematic label for port 1 (LV bus / second connection). Display only — shown on the canvas symbol near the LV terminal pin. Does not affect simulation. string any text - -
hv_bus High voltage bus integer - Bus (winding 1) 🔴 PF, SC, OPF
lv_bus Low voltage bus integer - Bus (winding 2) 🔴 PF, SC, OPF
sn_mva Rated apparent power in MVA float > 0 kVA 🔴 PF, SC, OPF
vn_hv_kv Rated high voltage in kV float > 0 kV (winding 1) 🔴 PF, SC, OPF
vn_lv_kv Rated low voltage in kV float > 0 kV (winding 2) 🔴 PF, SC, OPF
vk_percent Short-circuit voltage in percent float > 0 %Z 🔴 PF, SC, OPF
vkr_percent Real part of short-circuit voltage in percent float ≥ 0 %R 🔴 PF, SC, OPF
pfe_kw Iron losses in kW float ≥ 0 %noload 🟡 PF, SC, OPF
i0_percent No-load current in percent float ≥ 0 %imag 🟡 PF, SC, OPF
parallel Number of parallel transformers integer ≥ 1 - 🟢 PF, SC, OPF
shift_degree Phase shift angle in degrees float -360 to 360 Wdg (angle) 🟢 PF, SC, OPF
vector_group Vector group designation (e.g., "Dyn11", "Yyn0"). App default: Dyn string - Wdg (conn) 🟢 PF, SC, OPF
tap_side Side with tap changer ("hv" or "lv") string hv, lv Wdg (tap side) 🔴 OPF
tap_pos Current tap position integer - tap 🟡 OPF
tap_neutral Neutral tap position integer - - 🟢 OPF
tap_min Minimum tap position integer - MinTap 🔴 OPF
tap_max Maximum tap position integer - MaxTap 🔴 OPF
tap_step_percent Voltage change per tap step in percent float - %RperTap 🔴 OPF
tap_step_degree Phase angle change per tap step in degrees float - - 🟢 OPF
tap_changer_type Type of tap changer: "Ratio" (default) adjusts voltage magnitude only, "Symmetrical" distributes tap change to both windings (new in pandapower 3.0+) string Ratio, Symmetrical - 🟢 PF, SC, OPF
discrete_tap_control Enable Discrete Tap Control for this transformer (requires Include controller on the Pandapower Load Flow dialog) boolean True/False - 🟢 PF
control_side Which bus voltage is monitored by the controller ("lv" or "hv") string lv, hv lv 🟢 PF
vm_lower_pu Lower voltage limit for Discrete Tap Control float 0.9 - 1.1 (typical) 0.99 🟢 PF
vm_upper_pu Upper voltage limit for Discrete Tap Control float 0.9 - 1.1 (typical) 1.01 🟢 PF
vk0_percent Zero-sequence short-circuit voltage in percent float > 0 %Z0 🟡 SC
vkr0_percent Real part of zero-sequence short-circuit voltage in percent float ≥ 0 %R0 🟡 SC
mag0_percent Zero-sequence magnetizing current in percent float ≥ 0 - 🟢 SC
mag0_rx Zero-sequence magnetizing R/X ratio float ≥ 0 - 🟢 SC
si0_hv_partial Zero-sequence short-circuit impedance distribution (HV side) float 0-1 - 🟡 SC
max_loading_percent Optional maximum loading (% of rating) for AC OPF (pandapower trafo.max_loading_percent). 0 = no limit. OPF tab. float ≥ 0 - 🔴 OPF
in_service Specifies if the transformer is in service boolean True/False enabled 🟡 PF, SC, OPF

Three Winding Transformer

pandapower OpenDSS

Three winding transformers have three separate windings, typically connecting three different voltage levels at one location.

Schematic Labels: Each of the three terminals can display a custom label on the canvas symbol (e.g. "HV", "MV", "LV"). These labels are purely cosmetic — they help identify which winding connects to which bus on the schematic, but do not affect simulation parameters or solver data. Edit them in the Schematic tab of the transformer dialog. Changes appear immediately on the canvas.

For the solver, Electrisim maps the three connected buses to HV / MV / LV by bus voltage (vn_kv): highest, middle, then lowest. If two buses share the same voltage, the original connection order is used as a tie-break so the mapping stays stable between runs.

Documentation References: 📘 pandapower Three Winding Transformer 📗 OpenDSS Transformer

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types Dialog tab
name Name of the three winding transformer string - name 🔴 PF, SC, OPF Load Flow
term_label_0 Schematic label for port 0 (HV bus / first connection). Display only — shown on the canvas symbol near the HV terminal pin. Does not affect simulation. string any text - - Schematic
term_label_1 Schematic label for port 1 (MV bus / second connection). Display only — shown on the canvas symbol near the MV terminal pin. Does not affect simulation. string any text - - Schematic
term_label_2 Schematic label for port 2 (LV bus / third connection). Display only — shown on the canvas symbol near the LV terminal pin. Does not affect simulation. string any text - - Schematic
hv_bus High voltage bus integer - - 🔴 PF, SC, OPF
mv_bus Medium voltage bus integer - - 🔴 PF, SC, OPF
lv_bus Low voltage bus integer - - 🔴 PF, SC, OPF
sn_hv_mva, sn_mv_mva, sn_lv_mva Rated power per winding in MVA float > 0 - 🔴 PF, SC, OPF
vn_hv_kv, vn_mv_kv, vn_lv_kv Rated voltage per winding in kV float > 0 - 🔴 PF, SC, OPF
vk_hv_percent, vk_mv_percent, vk_lv_percent Short-circuit voltages in percent float > 0 %Z (Wdg 1-2, 2-3, 3-1) 🔴 PF, SC, OPF
vkr_hv_percent, vkr_mv_percent, vkr_lv_percent Real part of short-circuit voltages in percent float ≥ 0 %R (Wdg 1-2, 2-3, 3-1) 🔴 PF, SC, OPF
pfe_kw Iron losses in kW float ≥ 0 %noload 🟡 PF, SC, OPF
i0_percent No-load current in percent float ≥ 0 %imag 🟡 PF, SC, OPF
shift_mv_degree Phase shift angle for MV winding in degrees float -360 to 360 Wdg 2 angle 🟢 PF, SC, OPF
shift_lv_degree Phase shift angle for LV winding in degrees float -360 to 360 Wdg 3 angle 🟢 PF, SC, OPF
vector_group Vector group designation (e.g., "YNyn0d5"). App default: Dyn (2W); configure per winding for 3W string - Wdg (conn) 🟢 PF, SC, OPF
tap_side Winding with tap changer ("hv", "mv", or "lv") string hv, mv, lv Wdg (tap side) 🔴 OPF
tap_pos Current tap position integer - tap 🟡 OPF
tap_neutral Neutral tap position integer - - 🟢 OPF
tap_min Minimum tap position integer - MinTap 🔴 OPF
tap_max Maximum tap position integer - MaxTap 🔴 OPF
tap_step_percent Voltage change per tap step in percent float - %RperTap 🔴 OPF
tap_changer_type Type of tap changer: "Ratio" (default) adjusts voltage magnitude only, "Symmetrical" distributes tap change to both windings (new in pandapower 3.0+) string Ratio, Symmetrical - 🟢 PF, SC, OPF
vk0_hv_percent, vk0_mv_percent, vk0_lv_percent Zero-sequence short-circuit voltages in percent float > 0 %Z0 (Wdg pairs) 🟡 SC
vkr0_hv_percent, vkr0_mv_percent, vkr0_lv_percent Real part of zero-sequence short-circuit voltages in percent float ≥ 0 %R0 (Wdg pairs) 🟡 SC
max_loading_percent Optional maximum loading (% of rating) for AC OPF (pandapower trafo3w.max_loading_percent). 0 = no limit. OPF tab. float ≥ 0 - 🔴 OPF
in_service Specifies if the transformer is in service boolean True/False enabled 🟡 PF, SC, OPF

Generator

pandapower OpenDSS

Generators represent synchronous generators with dynamic behavior. They are typically used for large power plants and have voltage control capabilities. For North American short-circuit studies, set ANSI machine type on the generator (used by ANSI/IEEE C37, beta).

Documentation References: 📘 pandapower Generator 📗 OpenDSS Generator

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the generator string - name 🔴 PF, SC, OPF
bus Bus the generator is connected to integer - Bus1 🔴 PF, SC, OPF
p_mw Active power setpoint in MW float - kW 🔴 OPF
vm_pu Voltage magnitude setpoint in per unit float > 0 kV (model=3) 🔴 PF, SC, OPF
sn_mva Rated apparent power in MVA float > 0 kVA 🟡 PF, SC, OPF
min_q_mvar Minimum reactive power in Mvar float - kvarmin 🔴 OPF
max_q_mvar Maximum reactive power in Mvar float - kvarmax 🔴 OPF
scaling Scaling factor for power float > 0 - 🟢 PF, SC, OPF
slack Whether this is the slack generator boolean True/False - 🟡 PF, SC, OPF
vn_kv Rated voltage in kV float > 0 kV 🔴 SC
xdss_pu Subtransient reactance in per unit for short-circuit float > 0 Xd'' 🔴 SC
rdss_ohm Subtransient resistance in Ohm for short-circuit float ≥ 0 - 🟡 SC
ansi_machine_type Rotating-machine class for ANSI/IEEE C37 reactance multipliers (turbo, hydro with amortisseur, hydro, synchronous motor). Used only when Short Circuit is run with the ANSI/IEEE C37 (beta) tick. See ANSI/IEEE C37. string turbo, hydro_amortisseur, hydro, sync_motor - 🟡 SC (ANSI)
cos_phi Rated power factor (cosine phi) float 0-1 pf 🟡 SC
pg_percent Generator participation factor in percent for power dispatch float 0-100 - 🟡 OPF
in_service Specifies if the generator is in service boolean True/False enabled 🟡 PF, SC, OPF

Harmonic Parameters (OpenDSS):

Parameter Description Type OpenDSS Property Simulation Types
spectrum Harmonic current injection spectrum name (e.g., "defaultgen") string spectrum 🟡 Harmonics
Xdpp Sub-transient reactance for harmonic model (per unit) float Xd'' 🟢 Harmonics
XRdp X/R ratio at sub-transient frequency for harmonic model float XRdp 🟢 Harmonics
dyn_machine_model ANDES machine model for TDS/EIG (GENROU or GENCLS). Empty numeric dynamics fields use textbook defaults. string — 🔴 TDS, EIG
dyn_M / dyn_H Inertia M (=2H) or H in seconds (Dynamics tab) float — 🟡 TDS, EIG
dyn_xd, dyn_xq, dyn_xd1, … Machine reactances and time constants (Dynamics tab). Leave empty for GENROU defaults. float — 🟡 TDS, EIG
dyn_exciter_model Exciter: EXDC2, SEXS, or NONE string — 🟡 TDS, EIG
dyn_governor_model Governor: TGOV1, IEEEG1, IEESGO, GAST, HYGOV, or NONE string — 🟡 TDS, EIG
dyn_exciter_model Exciter: EXDC2, SEXS, IEEEX1, ESDC2A, EXST1, ESST1A, AC8B, or NONE string — 🟡 TDS, EIG
dyn_pss_model PSS: IEEEST or NONE string — 🟡 TDS, EIG

Dynamics tab: Open the Generator dialog → Dynamics to set machine, exciter, governor, and optional PSS parameters for Transient Stability and Eigenvalue Analysis. If fields are left empty, Electrisim applies GENROU + EXDC2 + TGOV1 defaults and lists them in the results as defaults_applied. Static Generators support renewable plant kinds (IBR / Wind / PVD1 / ESD1) with REGCA1–REPCA1 and related ANDES models.

Slack concept by framework

The slack parameter in Electrisim applies to Pandapower load flow only. OpenDSS handles the slack bus differently:

Framework Slack concept
Pandapower slack=True on a generator marks it as the slack bus
OpenDSS Vsource is the slack; Generator has no slack flag

For OpenDSS load flow, the slack role is handled by Vsource elements (External Grid), not by the Generator object.

Capacitor & Shunt Reactor

pandapower OpenDSS

Electrisim provides two separate shunt elements for reactive power compensation: a Capacitor (capacitor bank for leading reactive power) and a Shunt Reactor (inductive shunt for lagging reactive power). Both appear as separate components in the element palette and have dedicated dialog forms. Internally, both map to the pandapower shunt element, while in OpenDSS they map to the Capacitor and Reactor elements respectively.

Documentation References: 📘 pandapower Shunt 📗 OpenDSS Capacitor 📗 OpenDSS Reactor

Capacitor Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the capacitor string - name 🔴 PF, SC, OPF
bus Bus the capacitor is connected to integer - Bus1 🔴 PF, SC, OPF
q_mvar Reactive power output in Mvar (positive = capacitive) float > 0 kvar 🔴 PF, SC, OPF
vn_kv Rated voltage in kV float > 0 kV 🟡 PF, SC, OPF
loss_factor Loss factor (tan delta) of the capacitor float ≥ 0 - 🟢 PF, SC, OPF
step Current active step (for switched capacitor banks) integer ≥ 1 numsteps 🟡 PF, SC, OPF
max_step Maximum number of steps in the capacitor bank integer ≥ 1 numsteps 🟢 PF, SC, OPF
in_service Specifies if the capacitor is in service boolean True/False enabled 🟡 PF, SC, OPF

Shunt Reactor Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the shunt reactor string - name 🔴 PF, SC, OPF
bus Bus the reactor is connected to integer - Bus1 🔴 PF, SC, OPF
q_mvar Reactive power in Mvar (negative = inductive/absorbing) float < 0 kvar (Reactor) 🔴 PF, SC, OPF
p_mw Active power losses in MW (usually small) float ≥ 0 - 🟡 PF, SC, OPF
vn_kv Rated voltage in kV float > 0 kV 🟡 PF, SC, OPF
in_service Specifies if the reactor is in service boolean True/False enabled 🟡 PF, SC, OPF
step Current shunt step position (integer steps). Used with max_step and, when the characteristic table is off, scales the base P/Q from the Power tab. float / int 0 … max_step — 🟡 PF, SC, OPF
max_step Maximum shunt step. Defines the upper range of valid steps; use with the characteristic table and with Fill steps 0…max step in the shunt dialog. float / int ≥ 0 — 🟡 PF, SC, OPF
step_dependency_table If enabled, P and Q at v = 1.0 p.u. for each step come from the shunt characteristic table (not from a single P/Q times step). Sent to pandapower as step_dependency_table with a shunt_characteristic_table block. OpenDSS applies the same table when creating the Reactor. boolean True/False kvar at the selected step (Reactor) 🟢 PF (pandapower and OpenDSS)
shunt_characteristic_table_json JSON array of rows { "step", "p_mw", "q_mvar" }: reactive (and loss) shunt power at 1.0 p.u. for that step. Should include every step you use, typically 0 through max_step. Both engines use the same JSON. string (JSON) — — 🟢 PF (pandapower and OpenDSS)
discrete_shunt_control Move the shunt step so the bus voltage at the shunt tracks vm_set_pu. Pandapower uses DiscreteShuntController. OpenDSS iterates the same step table after each snapshot solve. For pandapower load flow, enable Shunt reactor tap changer under Include controller. For Grid Code Compliance (P-Q), enable Shunt reactor control. boolean True/False — 🟢 PF (pandapower controlled run; OpenDSS snapshot)
vm_set_pu Voltage setpoint (p.u.) for discrete shunt control. float typ. 0.9–1.1 — 🟢 PF (pandapower and OpenDSS)
shunt_control_increment How many step positions the controller may change per iteration. integer ≥ 1 — 🟢 PF (pandapower and OpenDSS)
shunt_control_tol Voltage band (p.u.) around vm_set_pu where no action is taken. float ≥ 0 — 🟢 PF (pandapower and OpenDSS)
shunt_reset_at_init If set, the controller may reset the shunt step at init (pandapower reset_at_init). boolean True/False — 🟢 PF (pandapower)
line_flow_step_control Set shunt step from active-power bands on a reference line (variable shunt reactor / VSR). Enable Shunt reactor tap changer under Include controller so pandapower load flow applies the lookup; enable Shunt reactor control in Grid Code Compliance (P-Q). OpenDSS snapshot load flow applies the same bands after the solve. boolean True/False — 🟢 PF (pandapower controlled run; OpenDSS snapshot)
line_flow_reference_line_id Diagram cell of the line whose P is compared with the band table. string (cell id) — — 🟢 PF (pandapower and OpenDSS)
line_flow_step_table_json JSON array of bands { "p_mw_min", "p_mw_max", "step" }. The last band includes the upper bound. Combined with line_flow_p_use_abs and line_flow_p_reference (p_from_mw or p_to_mw). string (JSON) — — 🟢 PF (pandapower and OpenDSS)

How shunt reactor parameters work together

The dialog is organised in three tabs. The relationship between “static” shunt data and “control” is:

  1. Power tab — base P and Q. Here you set p_mw and q_mvar as the reference shunt power at 1.0 p.u. If you do not use a step characteristic table, the network model uses this pair together with step and max_step (equivalent shunt scaling with the step number).
  2. Electrical tab — vn_kv. Shunt equipment rating; it must be consistent with the bus you connect to. It does not, by itself, turn control on or off.
  3. Control tab — steps and the optional table.
    • step and max_step define the discrete positions of the shunt. max_step is the top step index you model (e.g. if steps are 0, 1, …, N, set max_step = N).
    • If Shunt characteristic table (step-dependent P/Q) is off, P and Q at the operating point follow the base values on the Power tab, combined with step.
    • If that option is on, you must fill the table so each step has its own p_mw and q_mvar at 1.0 p.u. Pandapower stores this as shunt_characteristic_table; OpenDSS applies the same rows to the Reactor. The dialog’s Fill steps 0…max step uses max_step to create empty rows you can complete.
  4. Control tab — discrete shunt (voltage) control. This is a different option from the characteristic table (you can enable either, both, or neither). The table defines what P and Q are at each step; Discrete shunt control changes step so the shunt bus voltage moves toward vm_set_pu. When both are on, the controller only updates step; the injections at that step still follow the table. For pandapower load flow, tick Shunt reactor tap changer under Include controller. For Grid Code Compliance (P-Q), tick Shunt reactor control in that study dialog. OpenDSS snapshot load flow runs the same loop when the option is enabled on the shunt.
  5. Control tab — Line P → shunt step. A separate lookup: the solver reads P on a reference line and sets step from the band table (typical VSR behaviour). This is also gated by Shunt reactor tap changer on pandapower load flow, and by Shunt reactor control in Grid Code Compliance (P-Q); OpenDSS snapshot applies it after the solve.

Summary. Use the Power tab for a simple fixed or step-scaled shunt; add the characteristic table when each step has different P/Q at 1 p.u.; use discrete shunt control for a voltage target; use Line P → shunt step for flow-based VSR tap. If a table and a controller are both enabled, the table provides the per-step model and the controller selects the step. All of these are properties of the shunt on the single-line diagram; the pandapower load-flow dialog or Grid Code Compliance (P-Q) turns controller execution on or off for the run.

Impedance

pandapower OpenDSS

A branch between two buses defined only by R and X (not a physical line type). Use it for a coupling, a simplified equivalent, or a connection that is not a cable or overhead line.

Documentation References: 📘 pandapower Impedance 📗 OpenDSS Documentation

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the impedance string - name 🔴 PF, SC, OPF
from_bus Starting bus integer - Bus1 🔴 PF, SC, OPF
to_bus Ending bus integer - Bus2 🔴 PF, SC, OPF
rft_pu Resistance in per unit float ≥ 0 R (converted to ohms) 🔴 PF, SC, OPF
xft_pu Reactance in per unit float - X (converted to ohms) 🔴 PF, SC, OPF
sn_mva Rated apparent power for per unit calculation in MVA float > 0 - 🟡 PF, SC, OPF
in_service Specifies if the impedance is in service boolean True/False enabled 🟡 PF, SC, OPF

Ward

pandapower OpenDSS

A Ward equivalent stands in for a neighbouring network you do not want to draw in full: a constant-power plus constant-impedance injection at one bus. Prefer this over inventing dummy lines when you only have a reduced-network equivalent.

Documentation References: 📘 pandapower Ward 📗 OpenDSS Documentation

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the ward equivalent string - - 🔴 PF, SC, OPF
bus Bus the ward is connected to integer - - 🔴 PF, SC, OPF
ps_mw Active power of the constant power component in MW float - PQ Load (kW) 🔴 PF, SC, OPF
qs_mvar Reactive power of the constant power component in Mvar float - PQ Load (kvar) 🔴 PF, SC, OPF
pz_mw Active power of the constant impedance component in MW float - Shunt (equiv.) 🔴 PF, SC, OPF
qz_mvar Reactive power of the constant impedance component in Mvar float - Shunt (equiv.) 🔴 PF, SC, OPF
in_service Specifies if the ward is in service boolean True/False - 🟡 PF, SC, OPF

Extended Ward

pandapower OpenDSS

Like a Ward equivalent, plus an internal bus and impedance so the voltage response of the reduced network is more accurate. Use it when a plain Ward model is too crude at the boundary bus.

Documentation References: 📘 pandapower Extended Ward 📗 OpenDSS Documentation

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the extended ward string - - 🔴 PF, SC, OPF
bus External bus integer - - 🔴 PF, SC, OPF
ps_mw Active power of constant power component in MW float - PQ Load (kW) 🔴 PF, SC, OPF
qs_mvar Reactive power of constant power component in Mvar float - PQ Load (kvar) 🔴 PF, SC, OPF
pz_mw Active power of impedance component in MW float - Shunt (equiv.) 🔴 PF, SC, OPF
qz_mvar Reactive power of impedance component in Mvar float - Shunt (equiv.) 🔴 PF, SC, OPF
r_ohm Internal resistance in Ohm float ≥ 0 - 🔴 PF, SC, OPF
x_ohm Internal reactance in Ohm float - - 🔴 PF, SC, OPF
vm_pu Internal bus voltage magnitude in per unit float > 0 PV Gen (equiv.) 🔴 PF, SC, OPF
in_service Specifies if the extended ward is in service boolean True/False - 🟡 PF, SC, OPF

Storage

pandapower OpenDSS

Storage elements represent battery energy storage systems (BESS) or other energy storage technologies that can both consume and generate power. Electrisim uses a unified Storage element that maps to both pandapower and OpenDSS. Dialog tabs: Power, Energy, Configuration, Optimization (OPF), Q capability (PCS P–Q envelope), OpenDSS Parameters, Inverter Control, and Economic.

Documentation References: 📘 pandapower Storage 📗 OpenDSS Storage 📗 OpenDSS Storage Properties

Parameters (Power & Energy)

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the storage string - name 🔴 PF, OPF
bus Bus the storage is connected to integer - Bus1 🔴 PF, OPF
p_mw Active power in MW (positive = charging/consuming, negative = discharging/generating). OpenDSS sign is converted automatically. After load flow, the storage result box shows this P; the connected busbar shows the sum of all devices on that bus (see busbar result boxes). float - kW, kWRated (Storage) 🔴 PF, OPF
q_mvar Reactive power in Mvar when Q setpoint mode is manual (positive = absorbing, negative = supplying). For curve-based Q, use Q setpoint mode or the dispatch-reversal inject/absorb options. float - kvar (Storage) 🟡 PF, OPF
q_setpoint_mode Load-flow Q when Use Q capability curve is on: manual uses q_mvar; capacitive_max uses Qmax (absorb); inductive_max uses Qmin (inject). Dispatch reversal can also command inject/absorb max from the same envelope. string manual, capacitive_max, inductive_max — 🟡 PF
max_e_mwh Maximum energy capacity in MWh (rated storage capacity) float > 0 kWhrated 🔴 OPF
min_e_mwh Minimum energy to keep in reserve (MWh). Maps to OpenDSS %reserve = (min_e_mwh / max_e_mwh) × 100. When min_e_mwh ≥ max_e_mwh, %reserve is not applied. float ≥ 0 %reserve 🔴 OPF
soc_percent State of charge in percent (0–100) float 0-100 %stored 🟡 OPF

Parameters (Configuration)

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
sn_mva Nominal / inverter rating in MVA. Maps to OpenDSS kVA. Used as kWRated when p_mw = 0. Together with P this is the kVA circle √(P²+Q²) ≤ Sn. A vendor D-shape, leftover Q at rated P, STATCOM Q at idle, voltage derate, and P vs Q priority need the Q capability tab and watt priority — kW and kVA alone are not a full PCS model. float > 0 kVA (Storage) 🟡 PF, OPF
conn Winding connection type (wye or delta) string wye, delta conn 🟡 PF (OpenDSS)
phases Number of electrical phases (1–3) integer 1–3 phases 🟡 PF (OpenDSS)
scaling Scaling factor for p_mw and q_mvar (pandapower only) float > 0 - 🟡 PF, OPF
type Optional string to classify the storage (e.g., Li-Ion, Flow). Informational only. string - - 🟡 PF, OPF
in_service Specifies if the storage is in service boolean True/False enabled 🟡 PF, OPF

Parameters (Optimization – pandapower OPF)

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
controllable Whether the storage is controllable by the Optimal Power Flow. Must be true to use OPF limits. boolean True/False - 🟡 OPF
max_p_mw Maximum active power injection for OPF (MW) float - - 🟡 OPF
min_p_mw Minimum active power injection for OPF (MW) float - - 🟡 OPF
max_q_mvar Maximum reactive power injection for OPF (MVar) float - - 🟡 OPF
min_q_mvar Minimum reactive power injection for OPF (MVar) float - - 🟡 OPF

Parameters (OpenDSS-specific)

These parameters apply when using OpenDSS for load flow, harmonics, or time-series simulations. They control the built-in inverter model, dispatch logic, and losses.

Parameter Description Type Value Range OpenDSS Property Simulation Types
state Initial operational state. Set automatically from p_mw sign when p_mw ≠ 0; use IDLING when p_mw = 0. string IDLING, CHARGING, DISCHARGING State 🟡 PF (OpenDSS)
disp_mode Dispatch mode: DEFAULT (loadshape triggers), FOLLOW (output follows loadshape), EXTERNAL (StorageController), LOADLEVEL, PRICE. string DEFAULT, FOLLOW, EXTERNAL, LOADLEVEL, PRICE DispMode 🟡 PF (OpenDSS)
pct_charge Charging rate as percent of rated kW. Default = 100. float 0–200 %Charge 🟡 PF (OpenDSS)
pct_discharge Discharge rate as percent of rated kW. Default = 100. float 0–200 %Discharge 🟡 PF (OpenDSS)
pct_eff_charge Charging efficiency (%). Default = 90. float 0–100 %EffCharge 🟡 PF (OpenDSS)
pct_eff_discharge Discharging efficiency (%). Default = 90. Round-trip ≈ pct_eff_charge × pct_eff_discharge. float 0–100 %EffDischarge 🟡 PF (OpenDSS)
pct_idling_kw Percent of rated kW consumed as active power while idling (auxiliary loads, cooling). Default = 1. float 0–100 %IdlingkW 🟡 PF (OpenDSS)
pct_idling_kvar Percent of rated kW consumed as reactive power while idling. Default = 0. float 0–100 %Idlingkvar 🟡 PF (OpenDSS)
discharge_trigger Loadshape level that triggers DISCHARGING. 0 = disabled. float 0–2 DischargeTrigger 🟡 PF (OpenDSS)
charge_trigger Loadshape level below which CHARGING is triggered. 0 = disabled. float 0–2 ChargeTrigger 🟡 PF (OpenDSS)
time_charge_trig Time of day (fractional hours, e.g. 2.0 = 2 AM) when storage automatically starts charging. -1 disables. Default = 2.0. float -1–24 TimeChargeTrig 🟡 PF (OpenDSS)
spectrum Harmonic current injection spectrum for OpenDSS harmonic analysis. "default" is the built-in inverter spectrum. string default, defaultgen, defaultload, pwm6, none spectrum 🟡 Harmonics (OpenDSS)

Q capability (PCS P–Q envelope)

The Q capability tab is the four-quadrant PCS envelope (not the wind-turbine ±0.95 PF triangle). Enable Use Q capability curve so load flow, OpenDSS kvarMax/kvarMaxAbs, OpenDER NP_Q_MAX_*, and BESS Dispatch Reversal apply Qmin/Qmax at the operating P.

kW + kVA is only the inverter circle √(P²+Q²) ≤ Sn. That is enough for a first check at unity PF (for example 45 MW on 50 MVA leaves about 22 MVAr of unused Q). It is not a full PCS model when you need a vendor D-shape, leftover Q at rated P, STATCOM Q at idle, voltage dependence of the envelope, or a rule for what is clipped at Sn (P vs Q).

Chart: P from −Pmax (discharge) to +Pmax (charge). Built-in PCS circle is Q = ±√(Sn²−P²) with a vertical cut at Pmax (full Q at P = 0). PCS D-shape holds Q at 0.9·Sn until the current circle binds. Custom is a vendor JSON table. Ratings come from Configuration sn_mva and OPF charge/discharge Pmax when set.

Parameter Description Type Value Range Simulation Types
reactive_capability_curve Use Q capability curve. Enforce Qmin/Qmax vs P. Off = kVA circle from sn_mva only (plus watt priority if on). boolean True/False (default False) 🟡 PF, dispatch reversal
q_cap_voltage_dependent Voltage-dependent Q envelope. Scale Qmin/Qmax with terminal voltage (capability vs U). Full Q at 1.00 pu; reduced toward 0.88 / 1.10 pu (already scaled at 0.98 / 1.02). This is not Volt-VAR droop (that is Inverter Control). boolean True/False (default False) 🟡 PF, dispatch reversal
q_capability_preset PCS envelope: pcs_circle (typical BESS), pcs_d_shape (flat Q then circle), or custom (edit JSON). string pcs_circle, pcs_d_shape, custom 🟡 PF, dispatch reversal
curve_style Interpolation of custom JSON knots. string straightLineYValues, constantYValue 🟡 PF
q_capability_curve_json Points {p_mw, q_min_mvar, q_max_mvar}. Four-quadrant when P spans negative (discharge) to positive (charge). JSON array — 🟡 PF, dispatch reversal

Inverter Control

OpenDSS InvControl (and OpenDER on dispatch reversal) pick the Q setpoint inside the envelope. Watt priority chooses which axis is sacrificed when √(P²+Q²) would exceed Sn.

Parameter Description Type Value Range OpenDSS Property Simulation Types
inv_control_mode NONE, Fixed Q, Fixed PF, Volt-VAR, Volt-Watt, Watt-PF, Watt-VAR. Dispatch reversal with OpenDER disables native InvControl and maps these modes into OpenDER. string NONE, FIXEDQ, FIXED_PF, VOLTVAR, … InvControl Mode 🟡 PF (OpenDSS), dispatch reversal
pf / pf_q_mode Discharge PF (P < 0). Lagging = absorb Q; leading = inject Q. Enter 0.85–1.0, not a negative PF. float / string 0.85–1.0; lagging, leading pf 🟡 PF (OpenDSS), dispatch reversal
pf_charge / pf_charge_q_mode Charge PF (P > 0). Same Q-direction convention as discharge PF. float / string 0.85–1.0; lagging, leading pf (charge) 🟡 PF (OpenDSS), dispatch reversal
watt_priority When hypot(P, Q) would exceed sn_mva: on = keep P and clip Q (typical FCR / energy dispatch); off = keep Q and clip P. boolean True/False (default False) WattPriority 🟡 PF, dispatch reversal
vv_xarray / vv_yarray Volt-VAR droop (control), IEEE 1547 preset available. Distinct from the voltage-dependent capability envelope. string pu V / pu Q points InvControl vvc_* 🟡 PF (OpenDSS), dispatch reversal

OpenDSS Implementation Notes

The following implementation details ensure consistent results between Pandapower and OpenDSS for storage elements:

  • Power dispatch: Both kWRated (inverter capacity) and kW (requested dispatch power) are set explicitly. The state (DISCHARGING/CHARGING/IDLING) is derived from the sign of p_mw.
  • Reactive power convention: Pandapower uses load convention (positive = absorbing). OpenDSS Storage uses generator convention (positive = supplying). The conversion is applied automatically.
  • Reserve handling: When min_e_mwh ≥ max_e_mwh, the OpenDSS %reserve parameter is not set. This prevents blocking discharge in snapshot power flow when the reserve would otherwise lock 100% of stored energy.
  • Connection and phases: The conn (wye/delta) and phases (1–3) parameters are passed to OpenDSS for correct modeling of single-phase or delta-connected storage.
  • Inverter model: OpenDSS Storage includes a built-in inverter model with efficiency, idling losses, and dispatch modes. Pandapower uses a simpler PQ-bus model; time-domain SOC updates require custom scripting.
  • P–Q envelope: When Use Q capability curve is on, Electrisim interpolates Qmin/Qmax at the operating P (PCS circle or custom JSON) and maps them to OpenDSS kvarMax / kvarMaxAbs. Optional voltage derate scales that band. Watt priority keeps P and clips Q at Sn (or the reverse if off).

BESS AC Block

pandapower OpenDSS

The BESS AC Block is a composite element available in the Storage palette (next to the Storage element). When you drag and drop it onto the canvas, it automatically creates and connects a complete Battery Energy Storage System (BESS) AC interconnection setup in a single step.

The block includes:

  • BESS BUSBAR 1 — MV busbar rated at 33 kV (high-voltage side)
  • Step-up Transformer — HV: 33 kV, LV: 690 V, connecting the MV and LV busbars
  • BESS BUSBAR 2 — LV busbar rated at 0.69 kV (low-voltage side)
  • Storage — Battery storage element (includes built-in inverter model) connected to the LV busbar

All four elements are pre-wired with correct connection points. Result placeholders for load flow and short-circuit analysis appear automatically for each busbar, the transformer, and the storage unit. You can connect the BESS AC block to your existing network by linking BESS BUSBAR 1 to your MV grid (e.g., 33 kV).

If you attach more than one Storage unit to the same LV busbar (BESS BUSBAR 2), load-flow P on that busbar is the net of those units — for example two units discharging at 1.75 MW each give −3.5 MW on the 0.69 kV bus, not −7 MW. The transformer LV/HV flows follow the same net. Details: On-diagram busbar results.

Documentation References: 📗 Storage 📗 OpenDSS Transformer 📗 Storage Properties

Note: The BESS AC Block is a composite palette template (MV bus, step-up transformer, LV bus, and Storage). It is not a separate backend element type — both pandapower and OpenDSS receive the four connected standard elements. Default drop values: MV bus 33 kV, LV bus 0.69 kV, transformer 33/0.69 kV, 1 MVA. You can modify all parameters to match your project.

Controls

The sidebar Controls palette groups plant and feeder controllers. It uses two analysis-oriented sub-tabs:

Double-click a control on the diagram to open its parameter dialog. OpenDSS controls are created as native OpenDSS objects when you run OpenDSS load flow. Wind Turbine Controllers are applied on the frontend (they do not create OpenDSS RegControl-style objects).

Wind Turbine Controller (steady-state)

pandapower OpenDSS

Palette: Controls → Steady-state → Common. Diagram label defaults to WindTurbineController (steady-state).

Chain linked to a Wind Turbine by name:

Wind Speed Input → Lookup (Power Curve) → Pref / P

Steady-state load flow: When enabled and linked, Electrisim sets the turbine’s p_mw (Pref) from wind speed and the selected power curve, then runs the normal load flow.

When you need it vs the turbine alone: The Wind Turbine already computes p_mw from its own curve and speed. Use this controller to:

  • Override wind speed on the controller (uncheck “use turbine wind speed”), or
  • Use a dedicated Controller Curve instead of the turbine’s machine curve (same built-in P(v) templates as the Wind Turbine: 2.5 MW onshore, 3.3 MW onshore, 15 MW offshore).

Averaging and gradient limiting live on the separate dynamic controller.

Key parameters

Parameter Description Type Simulation Types
name Controller name string 🔴 PF
wind_turbine Name of the linked Wind Turbine on the diagram string 🔴 PF
enabled When false, the controller is ignored boolean 🔴 PF
use_turbine_wind_speed If true, Pref uses the turbine’s wind_speed_ms; if false, uses the controller’s wind speed boolean 🔴 PF
wind_speed_ms Controller wind speed (used when not using the turbine speed) float 🔴 PF
power_curve_type Turbine Power Curve or Controller Curve string 🔴 PF

Engines: Pref is applied for both pandapower and OpenDSS load flow. The controller cell itself is skipped as an OpenDSS native control object.

Wind Turbine Controller (dynamic)

pandapower OpenDSS

Palette: Controls → Dynamic → Common. Diagram label defaults to WindTurbineController (dynamic).

Chain linked to a Wind Turbine by name:

Wind Speed Averaging → Gradient Limiter → Active Power Averaging

Time-domain only: Parameters are stored for RMS / transient studies. Snapshot load flow does not apply averaging or gradient limiting — use the steady-state controller (or the turbine’s own curve) for Pref.

Key parameters

Parameter Description Type Simulation Types
wind_turbine Name of the linked Wind Turbine string 🟡 Dynamic
wind_avg_T / wind_avg_Tavg Wind-speed averaging time constants float 🟡 Dynamic
gradient_T / gradient_max Gradient limiter time constant and max ramp [MW/s] float 🟡 Dynamic
power_avg_T / power_avg_Tavg Active-power averaging time constants float 🟡 Dynamic

Park Controller (steady-state, pandapower)

pandapower

Station / park controller for pandapower load flow. It coordinates reactive power of linked Wind Turbines and Static Generators to meet a plant-level target. The same object is used by Grid Code Compliance (P-Q) and Grid Code Compliance (V-Q) when Plant Q dispatch is set to Park Controller (constant Q at the point of connection during the capability search).

Palette: Controls → Steady-state → Pandapower. Diagram label defaults to ParkController (steady-state).

Control modes (General tab):

  • Voltage Control — hold bus voltage (optional droop: rated Q + droop %).
  • Reactive Power Control — Const Q, Q(V) or Q(P) characteristic at a busbar, line, or transformer boundary.
  • Power Factor Control — Const cosφ, or cosφ(P)/cosφ(V) characteristics (converted to a Q setpoint) at a busbar, line, or transformer. See cosφ(P) characteristic below.
  • tan(φ) Control — Q = P × tan(φ) at a busbar, line, or transformer boundary.

Distribution: share plant Q among machines by dispatched P, rated S, Q capability (P–Q / P–U curve band at current P and terminal voltage), individual %, maximise reserve (remaining headroom on the curve), or equal shares (voltage setpoint adaption). Enable Use machine P–Q capability curves so each Wind Turbine / Static Generator Q capability tab limits park Q (clamp plant setpoint + enforce min/max Q at current P and U).

cosφ(P) characteristic

On the General tab, set PF-Control to cosphi(P)-Characteristic. Electrisim stores two branches (overexcited and underexcited). Each branch is one operating point: Min. power factor at a given Active power [MW].

Branch (stored value) Also shown as Meaning (generator convention)
Overexcited capacitive Plant injects Q (Q ≥ 0). Same side as Wind Turbine Qmax / capacitive max.
Underexcited inductive Plant absorbs Q (Q < 0). Same side as Wind Turbine Qmin / inductive max.

Excitation branch chooses which curve is used:

  • Overexcited (capacitive) or Underexcited (inductive) — force that branch.
  • Auto (by Q sign) — Overexcited when measured Q ≥ 0 at Control Q at, otherwise Underexcited.

The dialog labels use Overexcited / Underexcited and also show capacitive/inductive so both machine language and grid-side Q language are visible. Stored attributes remain Overexcited / Underexcited.

How it runs

  1. Drop a Park Controller; open it and select connected machines by name.
  2. Set control mode, measurement bus or boundary (line/transformer name), and setpoints / characteristic tables.
  3. Run pandapower Load Flow. Electrisim attaches pandapower BinarySearchControl (and DroopControl when droop is enabled) and enables run_control automatically when a Park Controller is present.

Note: OpenDSS ignores Park Controllers. Balanced load flow uses positive-sequence voltage only. Sync Generators (gen) are not Q-controlled by BinarySearchControl in current pandapower — link Wind Turbines / Static Generators (sgens).

Documentation: pandapower Station Controller / BinarySearchControl

RegControl (OpenDSS)

OpenDSS

OpenDSS regulator control attached to a transformer by canvas name. Used in OpenDSS load flow (and related studies such as DG interconnection mitigations) to hold regulated voltage within a band.

Palette: Controls → Steady-state → OpenDSS.

Parameter Description Type Typical default
name Control name string RegControl
transformer Transformer name (or bus reference) on the diagram string —
winding Controlled winding integer 2
vreg Regulated voltage [V] float 120
band Bandwidth [V] float 3
ptratio / ctprim PT ratio and CT primary [A] float 60 / 300
delaying Control delay [s] float 15
enabled Enable / disable the control boolean true

Documentation: OpenDSS RegControl

CapControl (OpenDSS)

OpenDSS

OpenDSS capacitor control linked to a capacitor (or bus) by name. Switches capacitor banks based on voltage, current, kvar, or time.

Palette: Controls → Steady-state → OpenDSS.

Parameter Description Type Typical default
name Control name string CapControl
capacitor Capacitor name (or bus reference) string —
type Control type string Voltage / Current / kvar / Time
on_setting / off_setting ON / OFF thresholds (units depend on type) float 115 / 125
ctratio / ptratio CT / PT ratios float 1 / 1
delay Switching delay [s] float 15
enabled Enable / disable the control boolean true

Documentation: OpenDSS CapControl

StorageController (OpenDSS)

OpenDSS

OpenDSS storage dispatch controller. Controlled Storage elements are exported with external dispatch mode so the controller can set charge / discharge.

Palette: Controls → Steady-state → OpenDSS.

Parameter Description Type Typical default
name Control name string StorageController
element Storage name(s), comma-separated string —
mode Dispatch mode string PeakShave / LoadFollow / Time / Support
kwtarget kW target for peak-shave / support modes float 0
pct_reserve Minimum state-of-charge reserve [%] float 20
enabled Enable / disable the control boolean true

Documentation: OpenDSS Storage

Pandapower-only elements

These palette elements are included only when the simulation engine is set to Pandapower. If you run load flow or short circuit with OpenDSS, they are excluded and Electrisim shows a warning listing any unsupported elements on the diagram.

Static Var Compensator (SVC)

pandapower

Static Var Compensators are FACTS devices used for dynamic voltage support and reactive power control. They can rapidly adjust reactive power output.

Documentation References: 📘 pandapower SVC 📗 OpenDSS Documentation

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the SVC string - - 🔴 PF, OPF
bus Bus the SVC is connected to integer - - 🔴 PF, OPF
x_l_ohm Inductive reactance in Ohm float > 0 XL (Reactor) 🔴 PF, OPF
x_cvar_ohm Variable capacitive reactance in Ohm float > 0 kvar (Capacitor) 🔴 PF, OPF
set_vm_pu Voltage setpoint in per unit float > 0 kvarlimit (CapControl) 🔴 PF, OPF
thyristor_firing_angle_degree Thyristor firing angle in degrees float 0-180 - 🟡 PF, OPF
min_angle_degree Minimum thyristor firing angle in degrees float 0-180 - 🟡 PF, OPF
max_angle_degree Maximum thyristor firing angle in degrees float 0-180 - 🟡 PF, OPF
controllable Whether the SVC is controllable boolean True/False - 🔴 OPF
in_service Specifies if the SVC is in service boolean True/False - 🟡 PF, OPF

Thyristor-Controlled Series Capacitor (TCSC)

pandapower

TCSCs are FACTS devices that provide controllable series compensation to regulate power flow and improve transmission capacity.

Documentation References: 📘 pandapower TCSC 📗 OpenDSS Documentation

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the TCSC string - name 🔴 PF, OPF
from_bus Starting bus integer - Bus1 🔴 PF, OPF
to_bus Ending bus integer - Bus2 🔴 PF, OPF
x_l_ohm Inductive reactance in Ohm float > 0 XL (Reactor) 🔴 PF, OPF
x_cvar_ohm Variable capacitive reactance in Ohm float > 0 C (Capacitor) 🔴 PF, OPF
set_p_to_mw Power flow setpoint at receiving end in MW float - - 🔴 OPF
thyristor_firing_angle_degree Thyristor firing angle in degrees float 0-180 - 🟡 PF, OPF
min_angle_degree Minimum firing angle in degrees float 0-180 - 🟡 PF, OPF
max_angle_degree Maximum firing angle in degrees float 0-180 - 🟡 PF, OPF
controllable Whether the TCSC is controllable boolean True/False - 🔴 OPF
in_service Specifies if the TCSC is in service boolean True/False enabled 🟡 PF, OPF

Static Synchronous Compensator (SSC / STATCOM)

pandapower

Static Synchronous Compensators (STATCOM) are advanced FACTS devices that use voltage source converters to provide dynamic reactive power support. They offer superior voltage control compared to traditional SVCs. In the palette this element appears as SSC(STATCOM).

Documentation References: 📘 pandapower SSC 📗 OpenDSS Documentation

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the SSC string - name 🔴 PF, OPF
bus Bus the SSC is connected to integer - Bus1 🔴 PF, OPF
r_ohm Internal resistance in Ohm float ≥ 0 R (Generator) 🔴 PF, OPF
x_ohm Internal reactance in Ohm float > 0 X (Generator) 🔴 PF, OPF
set_vm_pu Voltage setpoint at connection bus in per unit float > 0 Voltage (InvControl) 🔴 PF, OPF
vm_internal_pu Internal voltage magnitude in per unit float > 0 kV (Generator) 🟡 PF, OPF
va_internal_degree Internal voltage angle in degrees float -360 to 360 Angle (Generator) 🟡 PF, OPF
controllable Whether the SSC is controllable boolean True/False Enabled (InvControl) 🔴 OPF
in_service Specifies if the SSC is in service boolean True/False enabled 🟡 PF, OPF

DC Line

pandapower

DC lines represent high-voltage direct current (HVDC) connections between AC systems. They provide controlled power transfer and can connect asynchronous networks.

Documentation References: 📘 pandapower DC Line OpenDSS: Not Available

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the DC line string - - 🔴 PF, OPF
from_bus Starting bus (rectifier side) integer - - 🔴 PF, OPF
to_bus Ending bus (inverter side) integer - - 🔴 PF, OPF
p_mw Active power transmitted from from_bus to to_bus in MW float - - 🔴 PF, OPF
loss_percent Relative transmission loss in percent float ≥ 0 - 🟡 PF, OPF
loss_mw Fixed transmission loss in MW float ≥ 0 - 🟡 PF, OPF
vm_from_pu Voltage setpoint at the from bus in per unit float > 0 - 🔴 PF, OPF
vm_to_pu Voltage setpoint at the to bus in per unit float > 0 - 🔴 PF, OPF
in_service Specifies if the DC line is in service boolean True/False - 🟡 PF, OPF

DC Bus

pandapower

DC buses represent connection points in DC networks, similar to AC buses but for direct current systems. They serve as nodes where DC components like DC loads, DC sources, and DC lines can be connected.

Documentation References: 📘 pandapower DC Bus OpenDSS: Not Available

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the DC bus string - - 🔴 PF, SC, OPF
vn_kv Rated voltage in kV float > 0 - 🔴 PF, SC, OPF
in_service Specifies if the DC bus is in service boolean True/False - 🟡 PF, SC, OPF

Load DC

pandapower

DC loads represent power consumption in DC networks. They consume active power from the DC system.

Documentation References: 📘 pandapower Load DC OpenDSS: Not Available

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the DC load string - - 🔴 PF, SC, OPF
bus DC bus the load is connected to integer - - 🔴 PF, SC, OPF
p_mw Active power consumption in MW float ≥ 0 - 🔴 PF, SC, OPF
in_service Specifies if the DC load is in service boolean True/False - 🟡 PF, SC, OPF

Source DC

pandapower

DC sources represent voltage sources in DC networks, similar to external grids in AC systems. They provide voltage reference and power injection into the DC network.

Documentation References: 📘 pandapower Source DC OpenDSS: Not Available

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the DC source string - - 🔴 PF, SC, OPF
bus DC bus the source is connected to integer - - 🔴 PF, SC, OPF
vm_pu Voltage magnitude setpoint in per unit float > 0 - 🔴 PF, SC, OPF
in_service Specifies if the DC source is in service boolean True/False - 🟡 PF, SC, OPF

Switch

pandapower

Switches represent circuit breakers, load break switches, or disconnectors that can connect or disconnect network elements (lines, transformers, or buses). In pandapower, a switch connects a bus to a line, transformer, three-winding transformer, or another bus. In OpenDSS, open switches are modeled by opening the corresponding line or transformer element.

Documentation References: 📘 pandapower Switch 📗 OpenDSS Documentation

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the switch string - name 🔴 PF, SC, OPF
bus Bus the switch is connected to integer - Bus1 🔴 PF, SC, OPF
element Name/index of the element the switch controls (a line, transformer, three-winding transformer, or bus) string/integer - - 🔴 PF, SC, OPF
et Element type the switch is connected to: "l" (line), "t" (transformer), "t3" (three-winding transformer), "b" (bus-bus) string l, t, t3, b - 🔴 PF, SC, OPF
closed Whether the switch is closed (True) or open (False) boolean True/False open/close action 🔴 PF, SC, OPF
type Type of switch: "CB" (Circuit Breaker), "LS" (Load Switch), "LBS" (Load Break Switch), "DS" (Disconnector) string CB, LS, LBS, DS - 🟡 PF, SC, OPF
z_ohm Impedance of the switch in Ohm (when closed) float ≥ 0 - 🟡 PF, SC, OPF
in_ka Rated current of the switch in kA float > 0 normamps 🟡 PF, SC, OPF
in_service Specifies if the switch is in service boolean True/False enabled 🟡 PF, SC, OPF
ansi_device_class ANSI/IEEE C37 device class for duty comparison: auto (from voltage), HV C37.010, LV C37.13, MCCB UL 489, or generator C37.013. Short Circuit tab. See ANSI/IEEE C37. string auto, hv_c37_010, lv_c37_013, mccb_ul_489, generator_c37_013 - 🟡 SC (ANSI)
interrupting_rating_ka Breaker interrupting rating in kA (ANSI duty check) float ≥ 0 - 🟡 SC (ANSI)
momentary_rating_ka Breaker momentary / close-and-latch rating in kA (ANSI duty check) float ≥ 0 - 🟡 SC (ANSI)

Short Circuit tab (ANSI/IEEE C37 duty)

When running ANSI/IEEE C37 short circuit (beta), use the Switch dialog Short Circuit tab to set device class and ratings. The results dialog then compares calculated interrupting and momentary duties against those ratings (pass/fail).

Protection tab (Protection Coordination Study)

When running the Protection Coordination Study, assign a device on the Switch dialog Protection tab. Key fields:

Parameter Description
protection_type none, ocr, fuse, earth_fault, directional, differential, or distance
fuse_type, rated_i_a, fuse_custom_std_json Library fuse name or custom I–t curve JSON and rated current (fuse mode)
oc_relay_type DTOC (definite time), IDMT (inverse), or IDTOC (combined). Manual grading and manual pickup (A) are supported for all three, including a complete IDTOC TCC. See Overcurrent relays (OCR).
curve_type, tms, t_grade, t_g, t_gg, t_diff IEC 60255 or IEEE C37.112 inverse curve and timing / grading settings (OCR mode)
pickup_mode, I_s_a, I_g_a, I_gg_a Automatic (from line ratings) or manual pickup currents in amperes: Is (IDMT/IDTOC), I> (DTOC/IDTOC), I>> (DTOC/IDTOC)
overload_factor, ct_current_factor, safety_factor Factors for automatic pickup calculation

Voltage Source Converter (VSC)

pandapower

Voltage Source Converters are power electronic devices that connect AC and DC networks. They enable bidirectional power flow and provide voltage control capabilities, making them essential for HVDC systems and renewable energy integration.

Documentation References: 📘 pandapower VSC OpenDSS: Not Available

Parameters:

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the VSC string - - 🔴 PF, SC, OPF
bus AC bus the VSC is connected to integer - Bus1 🔴 PF, SC, OPF
bus_dc DC bus the VSC is connected to integer - - 🔴 PF, SC, OPF
p_mw Active power setpoint at the AC bus in MW float - kW 🔴 PF, SC, OPF
vm_pu Voltage magnitude setpoint on the AC side in per unit float > 0 kV 🔴 PF, SC, OPF
sn_mva Nominal power of the VSC in MVA float > 0 kVA 🟡 PF, SC, OPF
rx R/X ratio of the VSC coupling transformer float ≥ 0 R/X 🟡 PF, SC, OPF
max_ik_ka Maximum short-circuit current in kA float > 0 - 🟡 SC
in_service Specifies if the VSC is in service boolean True/False enabled 🟡 PF, SC, OPF

Back-to-Back Voltage Source Converter (B2B VSC)

pandapower

In Electrisim, the B2B VSC cell models a dual–DC–bus back-to-back converter: one AC connection plus two DC buses (plus and minus) for detailed DC grid or metallic-return style studies. In pandapower v3.3.2 this maps to the B2B VSC element (create_b2b_vsc, net.b2b_vsc).

Alternatively, a single–AC–to–single–DC connection uses the VSC element and DC Bus per side as needed.

Documentation References: 📘 pandapower B2B VSC OpenDSS: Not Available

Parameters (Load Flow / OPF; connections from the diagram):

Parameter Description Type Value Range OpenDSS Equivalent Simulation Types
name Name of the B2B VSC string - - 🔴 PF, OPF
(topology) One AC bus and two DC buses (plus / minus) are set from the diagram edges (not a form field). - - - 🔴 PF, OPF
r_ohm / x_ohm Series resistance and reactance of the VSC coupling branch (Ω), per pandapower b2b_vsc. float ≥ 0 - 🔴 PF, OPF
r_dc_ohm Internal DC path resistance component (Ω). float ≥ 0 - 🔴 PF, OPF
control_mode_ac / control_value_ac AC control mode (vm_pu or q_mvar) and corresponding setpoint (p.u. or MVAr). string / float see pandapower - 🔴 PF, OPF
control_mode_dc / control_value_dc DC control mode (vm_pu or p_mw) and setpoint (p.u. or MW). string / float see pandapower - 🔴 PF, OPF
in_service Whether the device is in service boolean True/False enabled 🟡 PF, OPF

OpenDSS-only elements

These palette elements are included only when the simulation engine is set to OpenDSS. They are not sent to Pandapower; if any are on the diagram during a Pandapower calculation, Electrisim warns that they will be skipped.

Single-phase distribution modeling

Use the five 1ph elements to build radial feeders such as: Source 1ph → Transformer 1ph → Line 1ph → Load 1ph, with optional Generator 1ph for distributed generation. Each exposes Phase (1, 2, or 3) and Connection (wye L-N or delta L-L) so the correct OpenDSS bus terminal (bus.1, bus.1.2, etc.) is used.

Tip: On radial single-phase lines, prefer wye (L-N) for loads and generators. Delta connection requires two energized phase nodes on the bus; if only one node is energized (typical for Line 1ph with wye connection), delta-connected loads may draw little or no power. Electrisim automatically switches delta loads and generators to wye on radial feeders and reports a warning in the load-flow results.

PVSystem

OpenDSS

The PVSystem element combines the photovoltaic (PV) array and the PV inverter in a single model. It assumes that the inverter tracks the maximum power point (MPP) of the panel quickly, making it suitable for quasi-static time-series (QSTS) simulations with time steps of at least one second. This model is adequate for most interconnection impact studies.

Documentation References: 📗 OpenDSS PVSystem 📗 OpenDSS PVSystem Properties

Note: PVSystem is an OpenDSS-only element. Pandapower has no direct equivalent; it can be approximated using a static generator.

Parameters

Parameters are organized by analysis type in the Electrisim PVSystem dialog:

PV Array Properties

Parameter Description Type Value Range OpenDSS Property Simulation Types
name Name identifier for the PV system element string - name 🔴 PF
irradiance Present irradiance value in kW/m². Used as base for shape multipliers. float ≥ 0 irradiance 🔴 PF
pmpp Rated max power of the PV array for 1.0 kW/m² irradiance at selected array temperature (kW) float > 0 Pmpp 🔴 PF
temperature Present temperature (°C). Used with P-TCurve to determine net array output. float - Temperature 🟡 PF

PV Inverter Properties

Parameter Description Type Value Range OpenDSS Property Simulation Types
phases Number of phases. Power is evenly divided among phases. integer 1–3 phases 🔴 PF
kv Nominal rated (1.0 pu) voltage in kV float > 0 kV 🔴 PF
pf Power factor for output power. Sets CONSTANT POWER FACTOR MODE. Negative when kW and kvar have opposite signs. float -1 to 1 pf 🟡 PF
kvar Present kvar value. Setting forces CONSTANT KVAR MODE. float - kvar 🟡 PF
kva kVA rating of inverter. Base for dynamics and harmonics. float > 0 kVA 🟡 PF, SC, Harmonics
cutin % cut-in power — % of kVA. Inverter turns on when array power exceeds this. float 0–100 %Cutin 🟢 PF
cutout % cut-out power — % of kVA. Inverter turns off when array power drops below this. float 0–100 %Cutout 🟢 PF
conn Connection type: wye or delta string wye, LN, delta, LL conn 🟡 PF

Operating Conditions

Parameter Description Type Value Range OpenDSS Property Simulation Types
model Power output variation with voltage: 1=Constant kW/kvar, 2=Constant Admittance, 3=User Model integer 1–3 model 🟡 PF
vminpu Minimum per unit voltage for model application. Below this, reverts to constant impedance. float > 0 Vminpu 🟡 PF
vmaxpu Maximum per unit voltage for model application. Above this, reverts to constant impedance. float > 0 Vmaxpu 🟡 PF
in_service Specifies if the PV system is in service boolean True/False enabled 🟡 PF

Time-dependent Load Flow (Load Shapes)

Parameter Description Type OpenDSS Property
yearly Dispatch shape for yearly simulations string (Loadshape name) yearly
daily Dispatch shape for daily simulations (typically 24 hrs) string (Loadshape name) daily
duty Load shape for duty cycle (e.g., solar ramp rate) string (Loadshape name) duty
tyearly, tdaily, tduty Temperature shapes for Pmpp vs T curve string (TShape name) Tyearly, Tdaily, Tduty
dutystart Starting time offset (hours) into duty cycle shape float DutyStart

Short Circuit

Parameter Description Type OpenDSS Property
r_percent Equivalent percent internal resistance (ohms) float %R
x_percent Equivalent percent internal reactance (ohms). Limits fault current to ~2 pu. float %X
basefreq Base frequency for ratings (Hz) float basefreq
balanced Force balanced current for 3-phase (zero/negative sequence = 0) boolean Balanced

Harmonic

Parameter Description Type OpenDSS Property
spectrum Name of harmonic voltage/current spectrum string spectrum
class_ Class number for PVSystem segregation integer class
debugtrace Capture PVSystem model progress per iteration boolean debugtrace

Dynamic (Control Mode)

Parameter Description Type OpenDSS Property
controlmode GFL (Grid Following) or GFM (Grid Forming). GFM for islanded microgrids. string ControlMode
kvarmax Maximum reactive power generation (kvar) float kvarMax
kvarmaxabs Maximum reactive power absorption (kvar) float kvarMaxAbs
kvdc Rated DC voltage at inverter input (kV) float kVDC
safevoltage Voltage level (%) for safe mode threshold float SafeVoltage
limitcurrent Limit current magnitude to Vminpu boolean LimitCurrent
amplimit Current limiter per phase for GFM mode float AmpLimit
wattpriority Watt priority instead of var priority boolean WattPriority
varfollowinverter Reactive power follows inverter on/off status boolean VarFollowInverter

Electrisim Implementation

In Electrisim, the PVSystem element is configured via the PVSystem dialog with parameters organized into tabs:

  • Snapshot Load Flow: PV array (irradiance, Pmpp, temperature), inverter (phases, kV, pf, kvar, kVA), and operating conditions (model, Vminpu, Vmaxpu)
  • Time-dependent Load Flow: Load shapes (yearly, daily, duty), temperature shapes (Tyearly, Tdaily, Tduty)
  • Short Circuit: Internal resistance/reactance (%R, %X), base frequency, balanced mode
  • Harmonic: Spectrum, class, debug trace
  • Dynamic: Control mode (GFL/GFM), reactive limits, PI controller, safety limits
  • Inverter Control: OpenDSS InvControl modes — NONE / Fixed Q / Fixed PF / Volt-VAR / Volt-Watt / Watt-PF / Watt-VAR / DynamicReacCurr (requires Control Mode = Time in OpenDSS load flow)

Load 1ph

OpenDSS

Single-phase constant-power load connected to one bus. Power is entered in kW and kVar (not MW/MVar). Results show actual kW/kVar, optional setpoint, and bus voltage in pu.

Documentation References: 📗 OpenDSS Load

Note: OpenDSS-only. Not available in pandapower.

Parameters

Parameter Description Type Value Range OpenDSS Property Simulation Types
nameElement namestring-name🔴 PF
busConnected busreference-Bus1🔴 PF
p_kwActive power demand (kW)float≥ 0kW🔴 PF
q_kvarReactive power demand (kVar)float-kvar🟡 PF
kvRated voltage (kV L-N or L-L). Empty = bus nominal.float> 0kV🟡 PF
pfPower factor (UI helper when deriving Q from P)float0–1pf🟢 PF
phaseOpenDSS phase node (1, 2, or 3)integer1–3Bus1 terminal🔴 PF
connWye (L-N) or delta (L-L)stringwye / deltaconn🔴 PF
spectrumHarmonic spectrum namestring-spectrum🟢 HA
pctSeriesRLSeries R-L percentage for harmonicsfloat0–100%SeriesRL🟢 HA
in_serviceInclude in simulationbooleanTrue/Falseenabled🟡 PF

Source 1ph

OpenDSS

Single-phase slack source (OpenDSS Vsource). The first Source 1ph in a model configures the circuit source (Vsource.source); additional sources create named Vsource objects. Equivalent to a single-phase external grid.

Documentation References: 📗 OpenDSS Vsource 📘 External Grid (three-phase)

Note: OpenDSS-only. Not available in pandapower.

Parameters

Parameter Description Type Value Range OpenDSS Property Simulation Types
nameElement namestring-name🔴 PF, SC
busConnected busreference-Bus1🔴 PF, SC
vm_puVoltage magnitude setpoint (pu)float> 0pu🔴 PF, SC
va_degreeVoltage angle (degrees)float-360 to 360angle🟡 PF
s_sc_max_mvaShort-circuit MVA for Thevenin impedancefloat> 0mvasc3 / R1,X1🔴 SC
phaseOpenDSS phase node (1, 2, or 3)integer1–3Bus1 terminal🔴 PF, SC
connWye (L-N) or delta (L-L)stringwye / deltaconn🔴 PF, SC
in_serviceInclude in simulationbooleanTrue/Falseenabled🟡 PF, SC

Generator 1ph

OpenDSS

Single-phase dispatchable generator with constant P/Q (OpenDSS Generator, phases=1). Power is entered in kW and kVar.

Documentation References: 📗 OpenDSS Generator 📘 Generator (three-phase)

Note: OpenDSS-only. Not available in pandapower.

Parameters

Parameter Description Type Value Range OpenDSS Property Simulation Types
nameElement namestring-name🔴 PF
busConnected busreference-Bus1🔴 PF
p_kwGenerated active power (kW)float≥ 0kW🔴 PF
q_kvarGenerated reactive power (kVar)float-kvar🟡 PF
kvRated voltage (kV). Empty = bus nominal.float> 0kV🟡 PF
sn_kvaRated apparent power (kVA), optionalfloat> 0kVA🟡 PF
modelOpenDSS generator model (1 = constant P&Q)integer1, 3, …Model🔴 PF
phaseOpenDSS phase node (1, 2, or 3)integer1–3Bus1 terminal🔴 PF
connWye (L-N) or delta (L-L)stringwye / deltaconn🔴 PF
spectrumHarmonic spectrum namestring-spectrum🟢 HA
in_serviceInclude in simulationbooleanTrue/Falseenabled🟡 PF

Transformer 1ph

OpenDSS

Two-winding single-phase transformer (phases=1 Windings=2). HV/LV sides are determined from bus nominal voltages. LV winding is always wye-connected; HV uses wye or delta according to the connection setting.

Documentation References: 📗 OpenDSS Transformer 📘 Transformer (three-phase)

Note: OpenDSS-only. Not available in pandapower.

Parameters

Parameter Description Type Value Range OpenDSS Property Simulation Types
nameElement namestring-name🔴 PF
busFrom / busToHV and LV buses (auto-sorted by voltage)reference-Buses🔴 PF
sn_kvaRated apparent power (kVA)float> 0kVAs🔴 PF
vk_percentShort-circuit voltage (%)float> 0XHL🔴 PF
vkr_percentResistive part of vk (%)float≥ 0%Rs🟡 PF
vn_hv_kvHV rated voltage (kV)float> 0kVs (HV)🔴 PF
vn_lv_kvLV rated voltage (kV)float> 0kVs (LV)🔴 PF
phaseOpenDSS phase node (1, 2, or 3)integer1–3Bus terminals🔴 PF
connHV connection: wye or deltastringwye / deltaConns🔴 PF
tap_posTap changer positioninteger-Taps🟡 PF
in_serviceInclude in simulationbooleanTrue/Falseenabled🟡 PF

Line 1ph

OpenDSS

Single-phase series impedance between two buses (phases=1). Uses per-km R, X, and optional shunt C with a length in km.

Documentation References: 📗 OpenDSS Line 📘 Line (three-phase)

Note: OpenDSS-only. Not available in pandapower.

Parameters

Parameter Description Type Value Range OpenDSS Property Simulation Types
nameElement namestring-name🔴 PF
busFrom / busToFrom and to busesreference-Bus1, Bus2🔴 PF
length_kmLine length (km)float≥ 0Length (units=km)🔴 PF
r_ohm_per_kmSeries resistance (Ω/km)float≥ 0R1🔴 PF
x_ohm_per_kmSeries reactance (Ω/km)float-X1🔴 PF
c_nf_per_kmShunt capacitance (nF/km), 0 = ignoredfloat≥ 0C1🟢 PF
phaseOpenDSS phase node (1, 2, or 3)integer1–3Bus terminals🔴 PF
connWye (L-N) or delta (L-L) at both endsstringwye / delta—🔴 PF
in_serviceInclude in simulationbooleanTrue/Falseenabled🟡 PF

Importing Network Models

If you already have a pandapower script or an OpenDSS circuit file, import it instead of redrawing the network. Electrisim builds the single-line diagram from the file, then you can edit parameters and run studies as usual.

Where to find it

File → Import from → Device... (or Open from device) and pick a file on your computer.

How to import

  1. Save a pandapower .py file that defines a net object, or an OpenDSS .dss circuit file.
  2. In Electrisim, choose File → Import from → Device....
  3. Select the file. Buses, lines, transformers, loads, generators, and (for OpenDSS) capacitors/reactors are placed on the canvas.
  4. Check rated voltages and names, then run Load Flow.

Supported native formats:

  • Pandapower (.py) — Python scripts that define a net object. The network will be converted to a diagram with buses, lines, transformers, loads, generators, and other elements.
  • OpenDSS (.dss) — OpenDSS circuit definition files. Buses, lines, transformers, loads, generators, capacitors, and reactors (including harmonic filters) are imported and displayed as a single-line diagram.

After import, the diagram is created automatically on the canvas. You can then run simulations, modify parameters, or export the model.

Component Data

Component Data is a spreadsheet of every element on the diagram. Use it when you need to change many parameters at once, or to review ratings without opening each dialog.

Where to find it

Edit menu → Component Data...

How to use it

  1. Open Component Data.... Each element type has its own tab (buses, lines, loads, generators, wind turbines, and so on).
  2. Filter or sort a column, then edit cells directly.
  3. Click Apply to write values back to the diagram, or Cancel to discard.

The Line tab includes thermal limit max_loading_percent for OPF (0 = no limit). The Bus tab includes min_vm_pu and max_vm_pu for OPF voltage bounds.

Wind Turbine tab

p_mw is derived from the power curve and is read-only in the grid. Change wind speed or the power-curve fields and P [MW] updates immediately. Fill-down on wind speed also recomputes P. Apply writes the new P back to each turbine on the canvas.

Maps

The Map Editor lets you design networks on a geographic map. Place buses and equipment at real coordinates, draw cables, and get line lengths from geography instead of typing kilometres by hand.

Where to find it

Open the Map Editor from the application menu, then Generate Electrical Model when the layout is ready.

Watch on YouTube

How to use the Map Editor

  1. Open the Map Editor from the application menu.
  2. Place nodes — Pick an element (Bus, Wind Turbine, External Grid, Transformer, …) and click the map.
  3. Draw cables — Use Draw Cable: click start, optional intermediate points, then the end node. Length in km comes from the coordinates.
  4. Click Generate Electrical Model to create the schematic with those line lengths, then run Load Flow as usual.

When to use a map

The Maps feature is especially useful for:

  • Offshore wind farms — Model turbine arrays, offshore substations, and export cables with realistic distances.
  • Distribution networks — Build models from geographic layouts where line lengths matter.
  • Transmission planning — Place substations and lines on a map and get correct line lengths for power flow and short-circuit analysis.

After generating the model, you can run load flow, short-circuit, and other analyses as usual. The diagram can be edited further in the standard Electrisim editor.

Development Process

Electrisim is open source and under active development. Use the links below for the product roadmap, source code, and contact — this page is not a changelog.

Roadmap, code, and support

Under the hood

You do not install these libraries locally. Electrisim calls them on the server (or in the packaged app) after you click Run.

  • pandapower v3.3.2 — documentation — balanced power flow, OPF, IEC 60909 short-circuit, protection, controllers, time series. Joint development of University of Kassel and Fraunhofer IEE.
  • OpenDSS (via opendssdirect.py) — documentation — unbalanced distribution, fault studies, harmonics, controls. Developed by EPRI.
  • ANDES — documentation — time-domain simulation and eigenvalue analysis. Developed at the CURENT Engineering Research Center; see CURENT/andes.
  • draw.io — diagramming framework for the canvas.

You can export generated pandapower Python or OpenDSS commands from several study dialogs if you want to continue outside Electrisim.

Acknowledgments

Electrisim would not exist without pandapower, OpenDSS, ANDES, and draw.io, and the people who maintain them.

Resources

Download power system models and explore articles on modeling, simulating and analyzing electrical power systems.

Models

You can download models below to be used in the Electrisim open-source software.

IEEE Harmonics Benchmark Model

OpenDSS harmonic analysis benchmark with TCR and HVDC loads, tuned filters, and reference THD results from IEEE PES GM 2024.

Read More

Hypergrid – Italian transmission network with HVDC VSC

10-bus model of the Italian transmission network with HVDC integration (Terna Hypergrid project). Based on Antonino Patti thesis, Università di Palermo; validated with Neplan, implemented with pandapower.

Offshore wind farm model - 1GW, 100km

Rev 4 (16.04.2026): three-winding substation transformers, tap-changer control for transformers and shunt reactors, and Q–P curves for wind turbine generators. 1 GW, 100 km export route.

Read More

PV Solar Farm - 100MW

Photovoltaic solar farm model with 100 MW rated power for power system analysis and grid integration studies

Read More

Onshore wind farm - 33MW, 110kV, 30kV

Onshore wind farm model with 33 MW rated power, with 110 kV km export cable and 30 kV medium voltage cables

Read More

Simple example - 3 bus network

It is a simple example to show the basic principles of creating a network for a load flow and short-circuit analysis.

Read More

IEEE models

IEEE power system test cases (currently 4,5,6 bus models available)

Read More

Multi-voltage level example

Multi voltage level example network (based on Pandapower)

Read More

CIGRE MV Network with DERs

CIGRE Medium Voltage network with distributed energy resources (DERs) for power system analysis

Read More

Knowledge Base

The Knowledge Base is used to publish articles on topics related to modeling, simulating and analyzing electrical power systems.

Optimal Power Flow (OPF) in Electrisim — pandapower tutorial model

Import the four-bus pandapower opf_basic.ipynb network from a downloadable .py script, then run Simulate → Optimal Power Flow (runopp). Covers import, objectives (poly_cost), and matching the notebook's solver tolerance.

Read More

Offshore wind: pandapower & OpenDSS dual-solver load flow check

Same offshore model run in pandapower (European open-source) and OpenDSS (U.S. EPRI): ~70 buses, 35 branches, 33 transformers, 450 MW wind. Slack power and corridor flows match within ~0.2%; a cross-continental sanity check for Electrisim results.

Read More

Offshore wind 1 GW / 100 km model — Rev 4

Key improvements in this release: Replaced two-winding transformers with three-winding transformers at onshore and offshore substations. Tap-changer controllers for transformers and shunt reactors implemented. Q–P characteristic curves added for wind turbine generators. See the model page for the Rev 4 download and full changelog.

Read more

Grid Compliance for Offshore Wind Farm

Step-by-step article series by Adam Kierad on designing and simulating a 1 GW offshore wind farm electrical system using Electrisim. Covers NC RfG and Polish Grid Code compliance, load flow, short-circuit, FRT, and power quality studies.

Read Article on LinkedIn

Open-Source Power Flow Tools Benchmarked Against PowerFactory

Independent research from ZHAW shows that pandapower, PyPSA and OpenDSS can match commercial PowerFactory results with an average error below 2%.

Read More

PandaPower vs OpenDSS Load Flow Results: Understanding the Differences

Why do load flow results differ between pandapower and OpenDSS? A summary of external grid modeling differences and how to align results using high short-circuit MVA.

Read More

Open-Source Power Systems Analysis: Electrisim Validated Against Commercial Software

A comprehensive master's thesis from University of Palermo demonstrates that Electrisim achieves results comparable to commercial tools like Neplan across IEEE test networks and real-world offshore wind farm models.

Read More

100MW PV - How to Specify Reactive Power Compensation for Using Open-Source Software - Introduction

A practical guide to meeting grid code requirements using Electrisim for a 100MW photovoltaic plant connected via underground cable.

Read More

How to specify reactive power compensation equipment for onshore wind

The article shows how to specify reactive power compensation equipment for an onshore wind farm to meet the grid code requirements in Electrisim software

Read More

Short Circuit Simulation in Electrisim - Based on Open-Source Tools

Learn how to perform short-circuit calculations in Electrisim using open-source libraries pandapower and OpenDSS. Calculate fault currents according to international standards.

Read More

Comparison of software for load flow calculation

The Electrisim software is tested by numerous tests to verify the proper results with pandapower.

Read More

Load flow, power flow - step by step

Load flow objective and problem, software, input/output data, calculation algorithms

Read More

Last updated: August 2026

Electrisim on YouTube · Frontend on GitHub

Copyright @2026 Electrisim. All Rights Reserved by Electrisim