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.

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 SimulateLoad Flow. Leave the pandapower tab and defaults, then click Run.
  7. Read the result — Voltage magnitude and angle appear on the buses. 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. 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), 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 PQ studies, 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, 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, and DG Interconnection Screening use OpenDSS. OPF, protection, contingency, time-series, economic analysis, both Grid Code studies, 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 SimulateLoad 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) and Grid Code Compliance (P-Q & U-Q) each have three independent checkboxes under Include controller. Tick only the families you want to move during that run. Grid Code Compliance (P-Q) does not use this block; it uses Transformer tap control and Shunt control 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_mintap_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), Voltage angle (degrees) pu, degrees
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, %

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. The PDF does not replace dedicated short-circuit or OPF study packs.

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)
  • Results are steady-state and do not consider dynamic or transient behavior
  • 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.

For Grid Code Compliance (P-Q & U-Q), the same three pandapower Include-controller checkboxes apply when you enable them in that dialog. Grid Code Compliance (P-Q) uses its own Transformer tap control and Shunt control options instead.

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

Short Circuit calculates fault currents on the network so you can size breakers, check withstand, and feed protection studies. The two engine tabs are not interchangeable: pandapower follows IEC 60909; OpenDSS runs a native fault study.

Where to find it

Simulate → Short Circuit. Pick the Pandapower or OpenDSS tab before you run.

When to use

  • Breaker and fuse interrupting ratings
  • Relay pickup and protection coordination
  • Grid-code style IEC 60909 studies (pandapower tab)

How to run

  1. Confirm the diagram already solves in Load Flow with the same engine you will use for faults.
  2. Click SimulateShort Circuit and choose the engine tab.
  3. Set fault type (3-phase, 2-phase, or 1-phase) and run.
  4. Read currents on the buses and branches. Use those values for Arc Flash if you need incident energy next.
Do not mix the two tabs

Pandapower is IEC 60909. OpenDSS is a Thévenin fault study and is not IEC 60909. Compare numbers only within the same engine.

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 tab — IEC 60909 via pandapower short-circuit calculation. Use for balanced three-phase networks and grid-code style studies.
  • OpenDSS tab — native OpenDSS fault study. Computes symmetrical, peak, and thermal currents per bus. Assumptions differ from the pandapower path.

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. Critical for ground fault protection and neutral sizing.

Input Parameters

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
Case Fault current calculation case 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

Calculation Cases

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).
  • Minimum Case (Ik'): Lowest fault current (typically for protection coordination). Assumes minimum generation, maximum impedances, voltage = 0.9 pu (cmin).

Output Results

The short circuit 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

The short circuit calculation follows DIN/IEC EN 60909 standard:

  • 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
  • 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 the Pandapower (IEC 60909) short circuit analysis, 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
  • Thermal short-circuit current (Ith, ith) in kA
  • Positive-sequence short-circuit resistance (Rk, rk_ohm) and reactance (Xk, xk_ohm) in ohms

Fault type (e.g. 3-phase) and frequency can be set in the OpenDSS tab. Results are shown on the diagram at each busbar. This option uses the same network model as OpenDSS load flow (buses, lines, loads, generators, external grid).

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

Technical References

Based on: pandapower Short-Circuit and DIN/IEC EN 60909 (Pandapower); OpenDSS Fault Studies (OpenDSS).

Algorithm Type: Pandapower: symmetrical components method with impedance-based fault calculation following international standards. 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).

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 SimulateArc 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 SimulateMotor 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 SimulateTransient 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 SimulateEigenvalue 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, I–t 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
  • 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) and set pickup / grading parameters.
  3. Click SimulateProtection 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), I–t 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 values from the Switch dialog)
curve_type, tms, t_grade, t_g, t_gg, t_diff Default IEC 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 inverse curve; TMS, grading delay, instantaneous and backup trip times; automatic or manual pickup currents.

At least one switch with a fuse or OCR assigned is required; otherwise the study returns an error.

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 grading curves (Chart.js) when enabled.
  • 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.
  • Differential (87) and distance (21) use Electrisim evaluators on SC results (not native pandapower device classes).
  • 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 SimulateDG 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; Grid Code Compliance (P-Q & U-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 SimulateHarmonic 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).
  • TableName (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 SimulateOptimal 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).
  • algorithmnr (Newton-Raphson), iwamoto_nr, fastdecoupled, or dc.
  • calculate_voltage_anglesauto, 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 SimulateEconomic 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.

Reactive Power Capability (PQ Diagram) App menu: Grid Code Compliance (P-Q & U-Q)

pandapower

P-Q and U-Q

Choose Grid Code Compliance (P-Q & U-Q) when you need a PQ diagram and a U-Q/Pmax view. Plant Q is set on each static generator or wind turbine.

P-Q with Park Controller

Choose Grid Code Compliance (P-Q) for a PQ diagram only, with optional plant Q dispatch through a Park Controller. There is no U-Q chart.

This study builds a PQ diagram (and U-Q/Pmax) at the point of common coupling (PCC) for plants modelled with static generators and/or wind turbines. It sweeps plant P, runs load flow at each step and PCC voltage, and records the Q range the plant can deliver.

Video tutorials: Reactive Power Capability (PQ Diagram)YouTube; offshore wind P-Q/Pmax worked example450 MW grid compliance (Part 1) (video card). U-Q/Pmax offshore tutorial planned separately.

Use cases:

  • Verify that the plant can deliver required Q (lagging/leading) across the P range at different PCC voltages
  • Compare simulated capability curves against grid code templates (e.g. ENTSO-E PPM, VDE AR-N, Saudi Arabian Grid Code (SAGC), other national codes) on the same chart
  • Document compliance for project or TSO submissions using the compliance flag and exported CSV
  • Study the effect of limiting Q to avoid branch/transformer overloads

How to run it

  1. Model the plant and grid: define a bus as the PCC, an external grid at the PCC (voltage source), and one or more static generators and/or wind turbine generators for the plant.
  2. In the Electrisim menu, choose Grid Code Compliance (P-Q & U-Q) (under Simulate; pandapower).
  3. Select PCC bus, external grid, and the Static Generator or Wind Turbine Generator units that represent the plant.
  4. Set P Max (MW), number of P steps, and voltage levels at PCC (pu) (comma-separated, e.g. 0.9, 0.95, 1.0, 1.05, 1.1).
  5. Optionally enable limit Q to avoid branch overloads and set a maximum loading (%).
  6. Optionally add grid code requirements: pick a P-Q template and P rated (MW), or use Apply to fill the table. A matching U-Q/Pmax template is selected automatically when U-Q is still “none”; you can override it. You can also edit P, Qmin, Qmax manually.
  7. Run the calculation. While the backend works, a small progress panel can show each voltage level being processed (when streaming is supported).

Key parameters explained

Parameter Meaning
P Max (MW) — 0 = auto Upper end of the active power sweep. 0 tells the solver to use the sum of installed capacity of the selected static generators and wind turbines (same idea as automatic rated power). Enter a positive value to cap the sweep (e.g. partial load or derated plant).
P rated (MW) (grid code section) Reference power used to scale per-unit grid-code templates into absolute MW and Mvar. If empty, the tool falls back to P Max (when > 0) or estimated installed capacity from the diagram.
Voltage levels (pu) PCC voltage setpoints for the external grid. The analysis produces one PQ curve family per level (tabs in the results window). When a U-Q/Pmax template is active, its voltage points are merged into this list automatically so the U-Q chart is a curve rather than two dots at a single U.
Q capability mode From Sn and P uses a circular (apparent-power) relation for each generator; Fixed fraction uses a simpler Q limit based on rating; From static generator or wind turbine P–Q curve uses the manufacturer-style Q capability table on each selected unit.
Grid code template / table Templates fill Qmin/Qmax vs P from standard envelopes. The results chart overlays required Q (blue) on top of simulated capability (red) when requirements are provided. Choosing a P-Q template with U-Q still set to “none” also selects the matching U-Q/Pmax envelope (for example Polish PPM Fig. 2 @ 400 kV pairs with Polish Type D U-Q @ 400 kV) so the U-Q results chart has a requirement overlay. See built-in templates below.

Built-in grid code templates

Choose Custom (manual table) to type P, Qmin, and Qmax yourself, or pick a built-in envelope. Values are per-unit of P rated before scaling to MW and Mvar. 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)
  • 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.

U-Q/Pmax diagram and grid-code templates

NC RfG Art. 21(3)(b)(i) requires reactive power capability at maximum active power as a function of voltage at the PoC (U-Q/Pmax profile). Electrisim extracts Qmax and Qmin at P = Pmax from the same RPC sweep used for P-Q diagrams and displays them in a dedicated U-Q / Pmax results view.

  1. In the RPC dialog, set P Max to rated output. You can leave voltage levels at a single value (e.g. 1.0 pu); the solver unions the U points from the U-Q template into the sweep so the U-Q chart is a curve.
  2. Pick a P-Q Template (or set a U-Q Template under U-Q/Pmax Grid Code Requirements). If U-Q is still “none”, Electrisim applies the paired U-Q envelope for that P-Q template (Polish Type D / PPM, Polish PPM Fig. 2 @ 400 kV, ENTSO-E PPM inner, VDE AR-N 4110).
  3. After the run, open results and switch from P-Q / Pmax to U-Q / Pmax: net Q at the PCC (Mvar) on the X-axis (positive = overexcited), voltage (p.u.) on the Y-axis. Red is simulated capability; blue is the PCC requirement envelope (overexcited solid, underexcited dashed) with a filled requirement area.
  4. Review the COMPLIANT / NON-COMPLIANT badge and the per-voltage results table; export CSV includes U-Q sections.

If the U-Q curve still has only one or two voltage points, add more levels by hand (e.g. 0.875, 0.9, 0.925, 0.95, 1.0, 1.05, 1.075, 1.1 pu) and Calculate again.

Built-in U-Q templates: Polish IRiESP PPM U-Q/Pmax @ 400 kV (Fig. 1 tapered polygon) and @ 110 kV; ENTSO-E PPM U-Q inner envelope. Values are per-unit of Prated before scaling to Mvar.

P-Q PPM template: Polish IRiESP – PPM P-Q/Pmax Fig. 2 @ 400 kV (Type D) matches NC RfG Figure 2: ±0.33 Q/Pmax at Pmax, −0.35 / +0.40 Q/Pmax from 10–90% P. Selecting it also applies the 400 kV U-Q template unless you already chose a different U-Q envelope.

What the results show

  • PQ diagram per voltage tab: P (MW) vs Q (Mvar) at the PCC, with capability Qmax/Qmin curves and optional grid-code requirement curves.
  • U-Q/Pmax diagram (results view toggle): Qmax/Qmin at P = Pmax vs PCC voltage (Q on X, U on Y), with optional U-Q grid-code overlay (blue requirement area) and compliance badge.
  • Compliance badge when requirements are defined: whether interpolated capability meets the required Q band at check points (separate flags for P-Q per voltage tab and U-Q at Pmax).
  • Warnings (e.g. power flow only converged at a reduced Q fraction, or Q limited due to overload constraints). See Warnings in the results dialog below.
  • Download CSV for all voltage levels and curve points.

Warnings in the results dialog

The yellow Warnings list explains how certain points on the PQ curves were obtained. It does not mean the whole analysis failed; it flags individual (voltage, P) combinations where the solver had to relax assumptions.

“Qmax converged at X% capability” / “Qmin converged at X% capability”

For each sweep point, the backend sets static-generator reactive power toward the full theoretical limit from the selected Q capability mode (for example, from each generator’s Sn and its share of plant P). It runs AC power flow starting at 100% of that limit. If power flow does not converge, it retries with 90%, then 80%, 70%, and lower fractions until a case converges. The number in the message is that fraction of theoretical reactive capability at which load flow first succeeded—it is not a percentage of solver iterations or “partial convergence.”

  • A value below 100% means the tool could not obtain a valid solution at full theoretical Q for that point; the chart shows the PCC Q from the reduced setpoint. Neighbouring P steps may use different fractions, which can make the capability curve look irregular or jagged compared to a smooth envelope.
  • Typical causes include stressed or weak-grid conditions, PCC voltages far from nominal, heavy reactive exchange with the network, or model aspects (impedances, transformer taps, P sharing among generators). Improving data quality or simplifying extreme branches often reduces these warnings.

“Qmax limited due to overload” / “Qmin limited due to overload”

These appear only when limit Q to avoid branch overloads is turned on. Here, reactive capability was reduced so that the worst line or transformer loading stays within your maximum loading (%), even if a higher Q would otherwise have been numerically feasible.

Technical summary

For each PCC voltage level and each P in the sweep, the backend adjusts generator P and Q, runs AC power flow (with robust solver fallbacks), and reads Q at the PCC. Qmax and Qmin branches correspond to overexcited and underexcited plant operation relative to the network. This is a numerical envelope built from many load-flow solutions, not a single analytical formula for the whole grid.

Based on: pandapower AC power flow (runpp) executed repeatedly inside Electrisim’s RPC workflow.

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

pandapower

P-Q and U-Q

Choose Grid Code Compliance (P-Q & U-Q) when you need a PQ diagram and a U-Q/Pmax view. Plant Q is set on each static generator or wind turbine.

P-Q with Park Controller

Choose Grid Code Compliance (P-Q) for a PQ diagram only, with optional plant Q dispatch through a Park Controller. There is no U-Q chart.

This study is a P-Q diagram at the point of connection only — no U-Q view. The distinctive option is plant Q through a Park Controller, instead of setting Q on each machine locally.

Park Controller: Place and configure a Park Controller on the SLD first (Machines, General, Distribution tabs). In this study, pick that controller and click Configure… to open the same dialog. When Park controller active is on, the sweep uses constant Q at the point of connection and reduces the plant Q setpoint if loading or voltage limits bind. When it is off, each unit gets a local Q setpoint (same idea as the P-Q & U-Q study) and other park controllers are taken 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, Park Controller, and plant units (auto-filled from the park Machines list when park control is on).
  4. Set Pn, sweep start / step / end (% of Pn), voltage levels, Q capability mode, and optional grid-code P-Q template.
  5. Optionally enable loading limit, voltage protection at LV terminals, worst-case transformer taps, shunt-first Q reduction, and Q with units not operating.

Key parameters

ParameterMeaning
Park controller activeOn: plant Q via Park Controller (constant Q at the point of connection). Off: local unit Q setpoints.
Pn, Un, UcReference active power and voltages at the point of connection. PCC voltage is applied as the requested p.u. times Uc/Un.
Sweep start / step / endActive-power sweep as % of Pn.
Q reduction stepStep size for Q reduction, as % of Pn. After a violating load flow, plant Q is cut by this amount until limits are OK or Q = 0.
Operating rangeGeneration, consumption (storage charging), or both.
Units kept at diagram PKeep selected units at their diagram P while the rest of the plant is scaled.
Transformer tap controlWorst-case taps: two voltage setpoints; keep the more restrictive Q envelope. Discrete taps only.
Shunt controlAuto switch shunts. With the loading limit, shunt compensation is reduced before plant Q.
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 plant P = Q = 0; report P and Q at the point of connection.
Table at 10%…100% of PnTable of Q capability at those active-power points.
Generator orientedPlot sign convention. Inputs stay generator-oriented. Switch the results chart between MW/Mvar and p.u. of Pn after the run.

Procedure

For each voltage level and each P from sweep start to sweep end:

  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 by the Q reduction step (% of Pn) until the network is within limits or Q reaches 0 Mvar.
    • Park controller off: each unit’s Q setpoint is reduced as a function of its rating (local Q on the static generator / wind turbine).
    • Park controller on: 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); keep the more restrictive Q envelope. Discrete taps only.

Park Controller Q applies to wind turbine and static generator elements only, not synchronous generators. OpenDSS is not supported.

Results show the red capability / blue requirement P-Q chart (click a red point to apply that load flow on the diagram), a MW/Mvar vs p.u. of Pn unit toggle, loading and voltage summary, optional 10% table, and CSV download. Grid-code templates are the same P-Q envelopes as in Grid Code Compliance (P-Q & U-Q).

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 SimulateContingency 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

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 SimulateBattery 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

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.

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.81.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 & U-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 & U-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) — typical Type IV fully rated converter: Q vs P and U. Default for new turbines (~2.5 MW class: about ±0.44 p.u. Q at U=1.0 and moderate P, tapering toward rated P and at high/low voltage).
  • ±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.

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 Maximum R0/X0 ratio for zero sequence short-circuit float ≥ 0 R0/X0 🟡 SC
x0x_max Maximum X0/X ratio (zero to positive sequence reactance) 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.

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
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 (and RPC), enable Shunt reactor tap changer under Include controller. 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 (and RPC) actually apply the lookup. 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 and RPC, tick Shunt reactor tap changer under Include controller. 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 / RPC; 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 or RPC dialog 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. Parameters are organized in the dialog into five tabs: Power, Energy, Configuration, Optimization (OPF), and OpenDSS Parameters.

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. float - kW, kWRated (Storage) 🔴 PF, OPF
q_mvar Reactive power in Mvar (positive = absorbing, negative = supplying) float - kvar (Storage) 🟡 PF, OPF
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. 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)

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_mwhmax_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.

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

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) when Park controller active is selected (constant Q at the point of connection during the capability sweep).

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

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, fuse, or ocr (overcurrent relay)
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, IDMT, or IDTOC
curve_type, tms, t_grade, t_g, t_gg, t_diff IEC inverse curve and timing / grading settings (OCR mode)
pickup_mode, I_s_a, I_g_a, I_gg_a Automatic or manual pickup currents
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 1phTransformer 1phLine 1phLoad 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.2documentation — 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.
  • ANDESdocumentation — 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.

Last updated: August 2026

Electrisim on YouTube · Frontend on GitHub

Copyright @2026 Electrisim. All Rights Reserved by Electrisim