IEEE Harmonics Benchmark Model
OpenDSS harmonic analysis benchmark with TCR and HVDC loads, tuned filters, and reference THD results from IEEE PES GM 2024.
Read MoreElectrisim is a free, open-source web app for power system analysis. You draw a single-line diagram in the browser, set parameters in dialogs, and run studies from the Simulate menu. Nothing needs to be installed, and you do not need to write scripts to get results on the diagram.
This page is the in-app reference. Start with First Steps if you are new, then pick a study under Simulation. Parameter tables for each network element are in Elements. Downloadable example networks and validation articles are under Resources.
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.
Build a tiny network, run load flow, and read voltages on the diagram. That is the loop you will reuse for every other study.
vn_kv) on each, for example 20 kV.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.
.py script or an OpenDSS .dss file.
Start from a template
Browse free wind, PV, IEEE, and CIGRE models you can open in Electrisim.
Step-by-step videos and worked examples: Tutorials.
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.
Load Flow and Short Circuit dialogs have Pandapower and OpenDSS tabs. Use pandapower for balanced transmission-style models and IEC 60909, or tick ANSI/IEEE C37 (beta) on the Pandapower Short Circuit tab for North American duties. Use OpenDSS for unbalanced feeders, harmonics, Monte Carlo, and DG screening. Transient Stability and Eigenvalue Analysis use ANDES only.
Confirm voltages, loadings, and what happens if equipment is out.
Fault levels, arc-flash incident energy, and device grading.
Need at least one synchronous Generator with dynamics data.
Unbalanced feeders, DER, and harmonics. Use the OpenDSS tab or the dedicated Simulate entries.
Connection studies and project cost from the same diagram.
Park Controller is pandapower-only and is not gated by the tap/shunt Include controller checkboxes. Harmonic analysis, Monte Carlo, InvControl, RegControl/CapControl/StorageController, DG Interconnection Screening, and BESS Dispatch Reversal use OpenDSS. OPF, protection, contingency, time-series, economic analysis, Grid Code Compliance (P-Q), Grid Code Compliance (V-Q), BESS Preliminary Design, and Battery Sizing use pandapower only.
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.
Simulate → Load Flow. Use the Pandapower tab for balanced networks, or the OpenDSS tab for unbalanced feeders and time-varying modes.
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.
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.
| 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 If Yes, the reactive power limits in For Note: |
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 |
The Load Flow dialog (Pandapower tab) has three independent checkboxes under Include controller. Tick only the families you want to move during that run. Grid Code Compliance (P-Q) uses its own Two-winding transformer tap changer, Three-winding transformer tap changer, Shunt reactor control, and Shunt on/off options instead.
DiscreteTapControl on two-winding transformers that have discrete tap control enabled in the transformer dialog.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.
For pandapower load flow only, you can model discrete OLTC/NLTC behaviour with pandapower’s DiscreteTapControl controller:
Electrisim sends discrete tap settings and the matching run_control_trafo2w / run_control_trafo3w flags to the backend; the solver may change tap_pos within tap_min…tap_max to keep the controlled bus inside the band.
Seeing the tap position after the run: For transformers that used DiscreteTapControl, the on-diagram transformer result box shows the tap position after the controlled load flow (and initial → final if it moved). If you export Pandapower results to a text file, the transformer table includes a Tap (control) column and a DISCRETE TAP CONTROL (summary) section. The JSON API also returns a tap_control_results array (tap limits, controlled-side voltage, band, etc.) for tooling or future UI.
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:
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).
| 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 |
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.
Values are written onto the diagram. The table below lists the quantities for export and for the health dashboard.
When the matching Include controller checkbox is on, transformer result labels show the final tap position (and initial→final if it moved). Exported results include a Tap (control) column and a DISCRETE TAP CONTROL (summary) section; the JSON API returns tap_control_results and, when used, shunt_control_results. There is no separate results dialog only for tap or shunt control.
| Output Category | Parameters | Units |
|---|---|---|
| Buses | Voltage magnitude (pu and kV), voltage angle; net active and reactive power (P, Q), power factor, Q/P — see Busbar result boxes | pu, kV, degrees, MW, Mvar, -, - |
| External Grids | Active power (P), Reactive power (Q), Power factor (PF), Q/P ratio | MW, Mvar, -, - |
| Lines | P_from, Q_from, I_from, P_to, Q_to, I_to, Loading percentage | MW, Mvar, kA, MW, Mvar, kA, % |
| Transformers | P_HV, Q_HV, P_LV, Q_LV, I_HV, I_LV, Loading percentage, Losses; plus tap_pos after control (and initial→final) when DiscreteTapControl was active | MW, Mvar, MW, Mvar, kA, kA, %, MW; tap steps (unitless) |
| Loads | P, Q, S, I, Power factor | MW, Mvar, MVA, kA, - |
| Generators | P, Q, S, I, Power factor | MW, Mvar, MVA, kA, - |
| Storage | P, Q, S, I, SOC (if applicable) | MW, Mvar, MVA, kA, % |
After a successful pandapower load flow, each busbar result box shows voltage (U[pu], U[kV], U[deg]) and the net power at that bus (P[MW], Q[MVar], PF, Q/P).
Sign convention (same as pandapower res_bus): negative P means net generation at the bus (power injected by generators or discharging Storage / BESS); positive P means net load (consumption, including charging storage).
What P on the busbar is: the net injection of devices connected to that bus — loads, generators, static generators, storage, shunts — including units behind a closed bus–switch. Several machines on the same busbar are summed once. They are not added again from the transformer or line that carries the same power away.
Example — two BESS on one LV busbar:
Each storage result box still shows 1.750 MW. The upstream transformer or line should carry about 3.5 MW (plus losses). If a busbar label ever looks like twice the connected generation, compare it with the individual device boxes and the upstream branch — the branch and the device boxes are the solved load flow; the busbar P is only an aggregation of those injections.
On a pass-through bus with no local generation or load, the box shows through-power on the incident lines or transformers so the label is not a bare zero. Slack / external-grid buses show the net injection at the reference bus (consistent with the External Grid box, opposite sign).
Related: Bus, Storage, BESS AC Block.
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).
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:
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.
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:
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).
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:
Scope: load-flow results only. For short-circuit studies, use the separate Short-Circuit Engineering Report (PDF) from the Short Circuit dialog or dashboard. OPF and other study types are not covered by either PDF template.
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:
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.
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:
Important Notes:
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
pandapower OpenDSS
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:
Grid Code Compliance (P-Q) does not use these Load Flow checkboxes. Enable two-winding / three-winding tap, shunt reactor control, and shunt on/off in that study’s own dialog.
Technical reference: pandapower Controller / run_control.
If you bookmarked this page previously as “Controller Simulation,” use Load Flow with “Include controller” instead.
pandapower OpenDSS ANSI/IEEE C37
Short Circuit calculates fault currents on the network so you can size breakers, check withstand, and feed protection studies. Two engine tabs are available and are not interchangeable: Pandapower can run IEC 60909 or ANSI/IEEE C37 (beta) (tick boxes on that tab); OpenDSS runs a native Thévenin fault study.
Simulate → Short Circuit. Pick Pandapower (then tick IEC 60909 or ANSI/IEEE C37) or OpenDSS before you run.
IEC 60909 (Pandapower) uses the IEC voltage factor and correction factors. ANSI/IEEE C37 (beta) uses prefault voltage (no IEC c-factor) and C37.010/C37.13/UL 489/C37.013 multiplying factors. OpenDSS is a generic Thévenin fault study. Compare numbers only within the same method, and size breakers to the same standard as the calculation.
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.
calc_sc. Outputs I1/2 sym, I1/2 peak, Iint, I30, X/R per bus, plus line and transformer currents (also written onto diagram result boxes), and breaker duty checks when Switch ratings are entered. Verify against utility requirements before using results for equipment ratings.ANSI/IEEE C37 short circuit is in beta. Use results for engineering review. Verify against utility or consultant practice before applying them to equipment ratings.
On the Pandapower tab, tick ANSI/IEEE C37 when the project or utility requires ANSI/IEEE C37 short-circuit duties (typical in Canada and the United States). This is not IEC 60909 with a different label.
The study follows the North American three-network method used in IEEE C37.010 (and described in IEEE Std 141, the Red Book). Electrisim builds three separate impedance networks from the same diagram:
Prefault voltage is applied directly (default 1.00 pu). There is no IEC voltage factor c and no IEC KG / KT correction factors. Asymmetry uses the calculated fault-point X/R: first-cycle peak from a fully offset wave, interrupting duty from the remaining DC component at contact parting (compared with the C37.010 X/R = 17 test circuit for symmetrically rated HV breakers), and extra first-cycle derating for LV devices when system X/R exceeds the C37.13 (6.6) or UL 489 (4.9) test circuit.
Set generator ANSI machine type (turbo, hydro, etc.) and Switch interrupting / momentary ratings on the Short Circuit tab for duty comparison. Device class can be auto (from voltage) or C37.010 / C37.13 / UL 489 / C37.013.
| IEC 60909 | ANSI/IEEE C37 (beta) | |
|---|---|---|
| Voltage | Voltage factor c (e.g. 1.1) | Prefault pu (typically 1.0) |
| Machines | IEC correction factors | Separate ½-cycle / interrupting / 30-cycle networks |
| Peak / interrupting | κ, ip, ib | X/R multiplying factors (C37.010 / C37.13 / UL 489) |
| Typical use | Europe, IEC-rated gear | Canada / US, ANSI-rated gear |
Currents are written to diagram result boxes on buses, lines, and transformers, and listed in the ANSI results dialog (and optional TXT export).
| Result | Meaning |
|---|---|
| I1/2 sym | First-cycle symmetrical RMS (subtransient network) |
| I1/2 peak | First-cycle peak (momentary / close-and-latch duty basis) |
| Iint | Interrupting duty at contact parting time (C37.010) |
| I30 | 30-cycle steady-state symmetrical current |
| X/R | Fault-point X/R for multiplying-factor application |
| Line I from / I to | Worst-case branch end currents over the chosen fault locations (all busbars, or User Selection). 3-phase and line-to-line only. |
| Transformer I HV / I LV | Worst-case HV and LV side currents |
| Device duty | Pass/fail against Switch interrupting and momentary ratings, when entered |
| Parameter | Description | Default |
|---|---|---|
| Fault | 3-phase, 2-phase, or 1-phase. Line and transformer branch currents are reported for 3-phase and 2-phase faults (positive-sequence network). Single-phase branch flows are omitted because the zero-sequence branch model is approximate. | Three Phase |
| Fault location | All busbars (default), or User Selection of one or more busbars. Tick busbars in the dialog, or select them on the diagram first. Branch currents then use only those fault locations. | All busbars |
| System frequency | Used for DC decay and contact-parting time | 60 Hz |
| Prefault voltage | Driving voltage in pu (no IEC c-factor) | 1.00 pu |
| Contact parting time | Breaker contact parting in cycles (interrupting network) | 3 cycles |
| Fault R / X | Optional fault impedance in ohm | 0 |
ANSI limitations (beta): do not mix ANSI currents with IEC-rated equipment. Single-phase line/transformer currents are not published. Arc flash still uses the IEC 60909 path. Spot-check a few duties against your C37.010 tables or a known hand calc before relying on ratings.
Electrisim supports three types of short circuit faults:
r0x0_max / x0x_max; minimum uses r0x0_min / x0x_min.Fault location is independent of fault type. All busbars (default) applies the chosen fault at every bus. User Selection applies it only at the busbars you tick in the dialog (busbars selected on the diagram are pre-ticked). Unselected bus result boxes show “Fault not applied”. A red thunder sign marks each faulted bus on the diagram until the next simulation.
These fields appear when IEC 60909 is ticked on the Pandapower tab. For ANSI parameters see ANSI/IEEE C37 above.
| Parameter | Description | Type | Options/Value Range | Default |
|---|---|---|---|---|
| Fault | Type of short circuit fault | radio | Three Phase (3ph), Two Phase (2ph), Single Phase (1ph) | Three Phase |
| Fault location | Where the fault is applied. All busbars computes Ikss at every bus. User Selection limits the study to the ticked busbars (pre-ticked from the diagram selection). Unselected bus result boxes show “Fault not applied”. | radio | All busbars, User Selection | All busbars |
| Case | Fault current calculation case. IEC 60909 maximum uses External Grid max short-circuit data; minimum uses min data. Single-phase minimum also needs r0x0_min and x0x_min (see External Grid). |
radio | Maximum (max), Minimum (min) | Maximum |
| Voltage Tolerance in LV Grids | Voltage tolerance factor for low voltage networks | radio | 6%, 10% | 6% |
| Topology | Network topology classification | radio | Auto, Radial, Meshed | Auto |
| Failure Clearing Time (s) | Fault duration for thermal rating (ith calculation) | number | > 0 | 1.0 |
| Fault Resistance (Ohm) | Resistance at fault location (for arc fault modeling) | number | ≥ 0 | 0 |
| Fault Reactance (Ohm) | Reactance at fault location | number | ≥ 0 | 0 |
| Inverse Should Be Used Instead of LU Factorization | Solution method preference | radio | True, False | True |
| Export Pandapower Python Code | Download generated Python that rebuilds the network and runs pandapower.shortcircuit.calc_sc (IEC 60909 only) |
checkbox | Yes/No | No |
| Export Pandapower Results | Download bus and branch short-circuit results as a .txt file | checkbox | Yes/No | No |
| Export PDF Engineering Report | Multi-page short-circuit PDF (see Short-Circuit Engineering Report) | checkbox | Yes/No | No |
After a successful short-circuit run (Pandapower IEC, ANSI/IEEE C37, or OpenDSS), Electrisim opens the Short-Circuit Dashboard: the same floating panel pattern as the load-flow Network Health Dashboard, but KPIs use fault currents (Ikss, Ip, Ith, X/R) instead of voltage and loading.
What you see: study score (0–100), max/min Ikss, peak and thermal currents, top fault-level buses and branches (click to focus on the SLD), Ikss histogram, critical issues (missing data, high fault levels, ANSI device duty fails), Highlight Hot Spots, Copy Summary, and Export Report for the short-circuit PDF.
Scenario Compare and Line current vs km remain load-flow-only tools.
Tick Export PDF Engineering Report in the Short Circuit dialog (any engine tab), or click Export Report on the Short-Circuit Dashboard after a run. The PDF includes cover metadata, executive summary with fault-current KPIs, single-line diagram pages, bus and branch tables, ANSI device duties when applicable, and an issues list.
According to DIN/IEC EN 60909, different calculation cases are used:
s_sc_max_mva, rx_max, and for 1-phase faults r0x0_max / x0x_max.s_sc_min_mva, rx_min, and for 1-phase faults r0x0_min / x0x_min.Single-phase minimum (IEC 60909): pandapower builds the external-grid zero-sequence impedance from r0x0_min and x0x_min. Set them on the External Grid dialog Short Circuit tab (Min R0/X0 Ratio, Min X0/X Ratio). If they were never stored on an older diagram, Electrisim copies the matching maximum ratios so the study can still run. Typical values when the utility does not give separate min data: R0/X0 ≈ 0.1, X0/X ≈ 1.0. Also set s_sc_min_mva > 0. See External Grid.
The IEC 60909 analysis provides detailed fault current information:
| Output Category | Parameters | Description | Units |
|---|---|---|---|
| Fault Location | Bus name, Fault type | Location and type of applied fault | - |
| Initial Symmetrical Current | Ik" (initial symmetrical short-circuit current) | Fault current at t=0 (symmetrical component) | kA |
| Peak Current | ip (peak short-circuit current) | Maximum instantaneous fault current including DC offset | kA |
| Breaking Current | Ib (breaking current) | Fault current at breaker opening time (symmetrical) | kA |
| Steady-State Current | Ik (steady-state short-circuit current) | Fault current after transients decay | kA |
| Thermal Current | Ith (thermal equivalent current) | Equivalent RMS current for thermal rating based on fault duration | kA |
| Branch Contributions | I_from, I_to for each branch | Fault current contribution from each line/transformer | kA |
| Generator Contributions | I_gen for each generator | Fault current contribution from each generator | kA |
| Voltage Profile | V_fault at all buses | Voltage magnitude at all buses during fault | kV or pu |
The IEC path follows DIN/IEC EN 60909:
Important Notes:
r0x0_max / x0x_max or r0x0_min / x0x_min) must be set for the selected case.In addition to Pandapower IEC 60909 and ANSI/IEEE C37 (beta), Electrisim offers short circuit calculation based on OpenDSS. In the Short Circuit dialog, select the OpenDSS tab to run a conventional fault study using the Open-Source Distribution System Simulator.
OpenDSS fault study (Solve Mode=FaultStudy) computes for every bus:
ip = 1.8 · √2 · ikss (fixed κ = 1.8), not the IEC κ(R/X) peakZsc1Fault type (e.g. 3-phase), Fault location (All busbars or User Selection), and frequency can be set in the OpenDSS tab. Results are shown on the diagram at each faulted busbar. Line, transformer, external-grid, and wind-turbine result boxes are updated to state that OpenDSS does not provide short-circuit currents for those elements (FaultStudy is bus Isc/Zsc only). Optional checkboxes: Export OpenDSS Commands (replay script .txt), Export OpenDSS Results (tabular .txt), and Export PDF Engineering Report (see Short-Circuit Engineering Report). This option uses the same network model as OpenDSS load flow (buses, lines, loads, generators, external grid).
The two engines can be run on the same diagram and will usually not return the same kA. That is expected: they implement different methods, not two numerical solvers of IEC 60909.
| Pandapower (IEC 60909) | OpenDSS FaultStudy | |
|---|---|---|
| Standard / method | IEC 60909 equivalent voltage source at the fault | Y-matrix study: Isc = Ysc · Voc from a snapshot |
| Driving voltage | Voltage factor c (typically cmax = 1.10 on MV) | Pre-fault bus voltage from the snapshot (~1.0 pu) |
| Transformers | Nameplate vk with IEC KT correction | Nameplate XHL (vk) without IEC KT |
| Wind turbines / static generators | IEC current sources with k = 1.1 (≈ k · Sn / (√3 Un) per machine) | OpenDSS Generator behind Xdpp (default 0.2 pu), i.e. a synchronous-machine subtransient model — much larger infeed than IEC type-4. Machine result boxes are not filled with a separate Ikss |
| Shunt capacitors | Typically neglected for maximum Ikss | Included in the nodal Y matrix |
| Peak current ip | IEC κ from R/X (method C) | Fixed κ = 1.8 in Electrisim |
| Thermal Ith | IEC equivalent for the clearing time tk | Set equal to ikss |
| Where results appear | Buses, lines, transformers, external grid | Buses only. Line, transformer, external-grid, and wind-turbine boxes state that OpenDSS does not provide those currents |
Typical pattern on a wind-farm feeder: OpenDSS Ikss is a few percent higher on MV/LV turbine buses (machine Xdpp infeed) and about 1/cmax lower on a capacitor LV bus with no turbine (no IEC voltage factor). Peak currents differ more because of the κ formula.
For breaker ratings, grid-code IEC studies, and comparison with utility IEC figures, use Pandapower IEC 60909. For ANSI-rated gear, use ANSI/IEEE C37. Treat OpenDSS FaultStudy as an IEEE-style Y-bus check, not as IEC Ikss.
OpenDSS references: Fault Studies, Fault Study Mode, Bus.Isc().
Based on: pandapower Short-Circuit and DIN/IEC EN 60909 (Pandapower IEC); IEEE C37.010 / C37.13 / UL 489 / C37.013 and IEEE Std 141 three-network method (Pandapower ANSI/IEEE C37, beta); OpenDSS Fault Studies (OpenDSS).
Algorithm Type: Pandapower IEC: symmetrical components with impedance-based fault calculation following IEC 60909. Pandapower ANSI: three impedance networks plus X/R multiplying factors (does not call IEC calc_sc). OpenDSS: conventional fault study with Thévenin equivalent and open-circuit voltage per bus.
Documentation References: 📘 pandapower Short-Circuit 📘 Running a Short-Circuit Calculation 📗 OpenDSS Fault Studies
Standards: IEC 60909: Short-circuit currents in three-phase a.c. systems (Pandapower IEC); IEEE C37.010, IEEE C37.13, UL 489, IEEE C37.013, IEEE Std 141 (Pandapower ANSI, beta).
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.
Simulate → Arc Flash (IEEE 1584). Requires an active subscription.
arcflash-calc).method: RalphLee so HV estimates are not confused with IEEE 1584 LV/MV results.| 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 |
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) |
— |
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.
Important notes:
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
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.
Simulate → Motor Starting. Requires a subscription. Each motor needs locked-rotor current, R/X, and rated voltage set in the Motor dialog.
Motor3 devices with u=0.Toggle connects each motor at \(t_{start}\).| 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 |
Important notes:
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)
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.
Simulate → Transient Stability (ANDES). Requires a subscription. You need at least one Generator with dynamics. An External Grid alone is not enough.
PFlow.run() establishes the operating point; TDS.run() integrates to tf.ω, δ, bus voltages, and an approximate system frequency from mean ω.| 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 |
ω (pu), rotor angle δ (rad), bus voltage (pu), mean frequency (Hz)tf, point count, generator/bus counts, event settingsBased on: ANDES PFlow + TDS. Demo model: transient_stability_two_machine_demo.py (File → Import).
Related: Eigenvalue Analysis · Generator Dynamics tab · Motor Starting (dynamic)
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.
Simulate → Eigenvalue Analysis (ANDES). Same requirement as Transient Stability: at least one Generator with dynamics.
| Parameter | Description | Default |
|---|---|---|
| Frequency / System Base | Same as TDS (Hz / MVA) | 50 / 100 |
| n_modes | Number of least-damped oscillatory modes to highlight | 10 |
Based on: ANDES eigenvalue tutorial.
Related: Transient Stability · Generator Dynamics tab
pandapower
Protection coordination checks whether devices operate in the right order for a chosen fault. Electrisim runs IEC 60909 short-circuit, then evaluates fuses and overcurrent (and related) devices. You get trip or melt times, complete time-current (TCC) curves, and miscoordination warnings.
Simulate → Protection Coordination. Devices are assigned on the Protection tab of each Switch.
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.
.txt report.| 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. |
These fields are sent as ProtectionCoordinationPandaPower in the POST body together with network elements.
| Parameter | Description |
|---|---|
fault_location_mode |
line or bus |
fault_bus_id |
Diagram cell ID of the fault busbar (required when mode is bus) |
sc_line_id, sc_fraction |
Line index (or all) and fault position 0–1 (line mode) |
fault_type, case |
3ph / 2ph / 1ph and max / min short-circuit case |
grading_mode |
auto (pandapower topological grading) or manual (per-switch t_g / t_gg / tms / t_grade from the Switch dialog; supported for DTOC, IDMT, and IDTOC) |
curve_type, tms, t_grade, t_g, t_gg, t_diff |
Default IEC 60255 or IEEE C37.112 inverse curve and timing settings for relays without explicit values |
overload_factor, ct_current_factor, safety_factor |
Defaults for automatic OCR pickup current calculation |
show_curves, show_table, show_miscoordination, export_results |
Results display and export options |
Per-switch parameters are configured on the Switch dialog Protection tab (see also Switch):
t_min, t_total, x_min, x_total) plus rated current.At least one switch with a protection device assigned is required; otherwise the study returns an error.
Assign Overcurrent Relay (OCR) on the Switch Protection tab. Subtype, curve, times, and pickups are taken from that switch; empty timing fields inherit the study Grading tab defaults.
| Subtype | Characteristic | Main settings |
|---|---|---|
| DTOC | Definite time: I>> trips at t_gg, I> trips at t_g |
I_g_a, I_gg_a (A); t_g, t_gg (s) |
| IDMT | Inverse time (IEC 60255 or IEEE C37.112) | I_s_a (A); tms, t_grade; curve_type |
| IDTOC | Combined: inverse segment up to I>, then definite I> / I>> steps | IDMT pickups and times plus DTOC I> / I>> settings |
auto uses pandapower topological grading. manual uses the per-switch times from the Switch dialog (t_g, t_gg, tms, t_grade). Manual grading is supported for DTOC, IDMT, and IDTOC, including a complete IDTOC TCC.auto derives pickups from line ratings and the overload / CT / safety factors. manual uses I_s_a, I_g_a, and I_gg_a in amperes (not kA)..txt report.activation_parameter_value, kA), trip/melt time (trip_melt_time_s, s).t_diff)..txt download with the same summary fields.s_sc_max_mva) with your reference case.pip install matplotlib).scenario=pp) is optional when enabled in the study dialog. For motor-start voltage dip studies, use Motor Starting Analysis.OCRelay where the network allows it, otherwise the Electrisim evaluator with the same Switch dialog settings.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.
Simulate → DG Interconnection Screening (OpenDSS).
Enable Volt-VAR on the DER inverter, or add feeder controls from the Controls palette (RegControl, CapControl).
Related studies: Battery Sizing for Busbar Requirements; BESS Dispatch Reversal; Grid Code Compliance (P-Q).
OpenDSS
Monte Carlo load flow samples load variation over many trials and reports bus voltage and line loading statistics (min, mean, max, and percentiles).
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.
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.
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.
Simulate → Harmonic Analysis (OpenDSS). Set spectra on each source or non-linear element first.
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.
| 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.
| 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. |
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
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.
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.
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.
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).
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).
Simulate → Optimal Power Flow (pandapower). Set costs and limits on generators, and voltage bands on buses, before you run.
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.
| 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 |
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.
In the OPF dialog, Cost function type selects how generator operating costs are modeled before calling pandapower:
poly_cost (cp2_eur_per_mw2, cp1_eur_per_mw, cp0_eur). It is usually the most robust choice for AC OPF.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).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.
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.
The OPF solution must satisfy:
net.bus.min_vm_pu / max_vm_pu from the diagram (see Bus)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.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 |
min_vm_pu, max_vm_pu) should bracket a feasible region.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.
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).
Important Notes:
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
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.
Simulate → Time Series Simulation (pandapower).
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.
time_steps — number of sequential power-flow solves. Each step represents one hour by default (e.g. 24 = one day, 8760 = one year).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:
constant, daily (residential), industrial, variableconstant, solar, wind, variableThe Random (tutorial) button fills absolute MW values between 0 and the element’s base P — matching the pandapower notebook example.
Collapsed under Advanced power flow settings in the dialog:
frequency — system frequency (Hz).algorithm — nr (Newton-Raphson), iwamoto_nr, fastdecoupled, or dc.calculate_voltage_angles — auto, yes, or no.init — initialization method. Auto is recommended; after the first converged step the backend warm-starts from previous results.After a successful run, the results dialog shows:
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.
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.| 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.
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.
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.
Simulate → Economic Analysis. Enter cost per unit on the Economic tab of each element first.
The economic analysis performs the following steps:
pl_mw) from lines, transformers, three-winding transformers, impedance branches, DC lines / DC lines mapped through pandapower.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.total_energy_losses_period_mwh. Multiplying by Lifetime (years) yields total_energy_losses_mwh, representing cumulative losses across the project horizon.total_energy_losses_mwh (lifetime MWh) × price.Power losses are computed by pandapower from the load flow results. The following formulas apply per element type:
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.
Ptotal,loss (MW) = Σ Ploss over all lines, transformers, impedance elements, and DC lines
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.
Cost = Elifetime (MWh) × energy_price_per_MWh
The frontend merges diagram cells with an object typ: "EconomicAnalysisPandaPower Parameters". Important keys mirrored by Flask (app.py):
frequency, currency, algorithm, calculate_voltage_angles, inituse_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_modetotal_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.| 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 |
total_energy_losses_period_mwh — integrated MWh over the simulated hour window.total_energy_losses_mwh — equals period energy × lifetime years.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.
pandapower
This study builds a P-Q diagram at the point of connection. It sweeps plant active power, runs load flow at each step and PCC voltage, and records the Q range the plant can deliver. The results chart plots net P and Q at the PCC (including collector and transformer losses). The blue grid-code overlay is in p.u. of Pmax at the PoC. Plant Q can be set locally on each static generator / wind turbine, or dispatched through a Park Controller as constant Q at the point of connection.
Simulate → Grid Code Compliance (P-Q) (pandapower only). Requires a subscription.
Worked examples: 33 MW onshore wind farm (park controller at the 110 kV POC); offshore wind P-Q/Pmax — 450 MW grid compliance (Part 1) (video card).
Use cases:
P and Q at the point of connection: The sweep still dispatches active power on the selected generators (as % of Pn). The results chart does not use that generator P. Red is net P and Q at the PCC from each solved load flow, so collector and transformer losses pull the top of the red envelope below installed P. Blue is the grid-code template in p.u. of that same Pmax at the PCC (including Q/Pmax ratios such as 0.33), not generator Pn. Installed P stays in the summary as the nameplate / sweep reference.
Plant Q dispatch: Choose Local Q on each static generator / wind turbine or Park Controller. Place and configure a Park Controller on the SLD first (Machines, General, Distribution tabs) if you use park dispatch. If one is on the diagram, this study selects it automatically; click Configure… to open the same dialog. Park mode uses constant Q at the point of connection and reduces the plant Q setpoint if loading or voltage limits bind. Local Q sets each unit’s q_mvar from its P–Q capability (or circular Sn–P fallback) and takes other park controllers out of service so they cannot overwrite Q.
The input dialog groups these into Point of connection, Plant, P–Q sweep, Transformer and shunt control, Loading limit, Voltage protection, Grid code requirement, and Results.
| Parameter | Meaning |
|---|---|
| Plant Q dispatch | Local Q sets each selected static generator / wind turbine to its capability Qmax or Qmin at that P. Park Controller dispatches plant Q as constant Q at the point of connection. If a Park Controller is on the diagram, it is selected automatically when you switch to park mode. Choose “— none —” only if you do not want a park. |
| Pn | Reference active power for the sweep only (start / step / end and Q reduction step as % of Pn). 0 = sum of selected unit ratings. The results chart does not plot this P: red uses net P at the PCC, and p.u. chart units are p.u. of Pmax at the PCC. |
| Un | Rated (nameplate) voltage of the PCC bus. Leave 0 to use the bus vn_kv. This is the per-unit voltage base. |
| Uc | Declared supply voltage at the connection point (grid-code Uc). It can differ from Un. Leave 0 to use Un. Each voltage level is applied on the PCC as (p.u.) × Uc/Un. Example: Un = 110 kV, Uc = 115 kV → 1.0 pu is applied as 1.045 pu. |
| Sweep start / step / end | Active-power sweep as % of Pn. |
| Q reduction step | Resolution for the Q search, as % of Pn. After a violating load flow, plant Q is reduced until limits are OK or Q = 0, to this step size. |
| Frequency | 50 Hz or 60 Hz for the load flows in this study. |
| Operating range | Sign of plant P in the sweep (which operating points are calculated). Generation evaluates Pstart…Pend as export (P ≥ 0). Consumption uses the same percentages as import (P ≤ 0, e.g. storage charging). Generation and consumption runs both. This is not a plot-sign setting — switch generator vs load convention on the results chart after the run. |
| Q limits | Not a dialog setting. Each selected wind turbine or static generator uses its Q capability tab when the curve is enabled. Units without a curve use a circular limit from Sn and P. The Park Controller option Use machine P–Q capability curves is separate: it only governs how plant Q is shared among machines during park control, not which envelope this study starts from. |
| Units that keep their diagram P | Optional. The sweep scales plant P across the selected generators. Tick units that should not be scaled — they keep the P already set on the diagram (for example a neighbouring machine outside this plant). Leave empty to scale every selected generator. |
| Two-winding transformer tap changer | Worst-case taps on two-winding transformers that have Discrete tap control enabled: two voltage setpoints (min and max of that transformer’s band); keep the more restrictive Q envelope. Other two-winding transformers keep their diagram tap_pos. After plant Q is applied, DiscreteTapControl is run again so the controlled side stays in a deadband at the chosen edge of that transformer’s band. The deadband is never made narrower than one tap step (tap_step_percent), because a discrete tap overshoots such a band and the controlled load flow would fail to converge. If the whole configured band is narrower than one tap step, neither edge is reachable and both runs aim at the band centre instead. Results report every operating point where tap control could not keep the controlled bus inside the band you configured, with the worst voltage, whether the tap was already at an end position, and whether the band is too narrow for the tap step. |
| Three-winding transformer tap changer | Same worst-case DiscreteTapControl logic for three-winding transformers that have discrete tap control enabled (control side hv, mv, or lv). Independent of the two-winding checkbox. |
| Shunt reactor control | pandapower DiscreteShuntController (voltage / target step) and Line P→shunt step, as configured on the shunt dialog — the same controllers as Load Flow. Independent of shunt on/off below. |
| Shunt on/off (reduce steps before plant Q) | Switch shunt compensation on/off automatically. With the loading limit, shunt compensation is reduced toward zero one step at a time before plant Q is cut. This can be used together with Shunt reactor control. |
| Loading limit / max loading | Cap Q so line and transformer loading stay within the limit. |
| Voltage protection | Cap Q when generating-unit LV terminal voltage leaves the min…max band. |
| Q with units not operating | Extra load flow with the selected units at P = Q = 0 (plant off). Results show residual P and Q at the point of connection from the rest of the network (loads, cables, shunts). This is not the P = 0 point on the red capability chart, which is plant Qmin/Qmax while the units are still providing reactive power. |
| Grid code requirement | Pick a built-in P-Q template or a custom table (see built-in templates). After the sweep, the blue overlay is scaled to Pmax at the PCC (highest net P on both Qmax and Qmin branches). Q requirements (e.g. 0.33 Q/Pmax) scale with that Pmax. A custom MW table is treated as p.u. of Pn and then scaled the same way. Compliance is assessed on this PCC-based envelope: the plant is compliant when red fully covers blue. |
| Table at 10%…100% of Pn | Adds a results table of Qmax and Qmin at 10%, 20%, … 100% of Pn along the PCC P axis (plus over-/underexcited power factor), in addition to the P–Q chart. A row is omitted when that P is above the highest net P delivered at the PCC (typical when collector/transformer losses keep PPCC below Pn). Included in the CSV download. The chart is always produced. |
For each voltage level, plant P is taken from the sweep start / step / end (% of Pn). Operating range sets the sign: generation uses +P, consumption uses −P, and “both” evaluates both signs. That sweep P is dispatched on the selected generators. The red chart plots net P and Q at the PCC from each solved load flow. The blue grid-code envelope uses the same Pmax: the highest net P delivered at the PCC (Q/Pmax ratios from the template apply to that Pmax, not generator Pn). Then for each sweep P:
Park Controller Q applies to wind turbine and static generator elements only, not synchronous generators. OpenDSS is not supported. You can Stop a run from the progress overlay; the backend cancels between load flows.
Choose Custom (manual table) to type P, Qmin, and Qmax yourself, or pick a built-in envelope. Values are stored as per-unit of a P base (Pn, or a custom MW table treated as p.u. of Pn) and then scaled to Pmax at the PCC (the highest net P from the load flows), so the blue envelope sits on the connection-point P axis with the red capability. These summaries support study and visualization only—always confirm against the official code text and your TSP or connection agreement.
Based on: pandapower AC power flow (runpp) executed repeatedly inside Electrisim’s Grid Code Compliance (P-Q) workflow.
pandapower
This study maps U-Q/Pmax at the point of connection: plant active power is held at Pmax (default 100% of Pn) while the external grid voltage is swept. At each voltage, Electrisim searches feasible Qmax and Qmin at the PCC (red). The blue overlay is the grid-code U-Q/Pmax requirement in Q/Pmax × Pn (registered Pmax), not scaled by collector losses. Plant Q can be local on each unit or dispatched through a Park Controller as constant Q at the point of connection.
Simulate → Grid Code Compliance (V-Q) (pandapower only). Requires a subscription. Distinct from Grid Code Compliance (P-Q) and from the older combined Grid Code Compliance (P-Q & U-Q) menu item.
Compliance: COMPLIANT when red capability fully covers the blue U-Q/Pmax envelope over the template voltage range. Un/Uc at the PCC work as in the P-Q study (applied voltage = p.u. × Uc/Un). This is a study walkthrough, not a TSO submission.
Based on: the same pandapower load-flow search as Grid Code Compliance (P-Q), with a single P setpoint and a voltage sweep.
pandapower ANDES
Electrisim supports a practical data-center interconnection path on existing engines: site screening with headroom and contingencies, ANSI pre/post short circuit, and ANDES RMS dynamics with an optional computational-load ride-through check. It does not bundle MMWG/WECC/ISO cases, read PSS/E CMLD/PERC1 .dyr records, or run EMT (ParaEMT/dpsim).
New diagram → Data center interconnection (utility pocket) tutorial for a small POI workflow, IEEE 118-bus transmission benchmark for a public 118-bus MATPOWER case (templates/tutorials/ieee118.py), or IEEE 300-bus transmission benchmark for the larger public case (templates/tutorials/ieee300.py). Neither is an official MMWG, WECC, ERCOT, or ISO planning base. PSS/E .raw and TARA .con are not imported directly.
Simulate → Data Center Site Screening (Beta). Tick the candidate loads, set MW sizes (for example 300, 500, 1000), power factor, voltage and thermal limits, and whether to include capped N-1-1 (line/transformer pairs, with a hard cap on the number of cases). Show hides the dialog and selects that load on the canvas; Back to site screening restores the dialog with your selections kept. Minimize on the title bar does the same.
The results table lists headroom MW, the intact system, the worst N-1 and N-1-1 cases, and an upgrade likely outcome when headroom is below the requested size or an outage adds violations. Click a violation count to see each bus, line, and transformer that is outside the limits, together with the value and the limit. Open this load flow in Network Dashboard hides the results and opens that case. The project load is selected on the diagram and labeled with the megawatts used in the case. That label is removed when you return to the results or close the dashboard. In the dashboard, click a critical issue to scroll to that element. CSV export uses the same columns as the table.
On Simulate → Short Circuit, Pandapower tab: tick ANSI/IEEE C37 (beta) and Compare pre/post project. List project elements to take out in the pre case (data-center load, on-site gen, BESS). Export pre/post CSV from the results dialog; for single-line-to-ground faults, use I½ sym at the POI for NGR sizing. IEC 60909 remains available on the same dialog; methods are not interchangeable for utility submission without engineering review.
Simulate → Transient Stability (ANDES): optional bus fault, line outage, generator trip, and POI bus for voltage/frequency metrics. On the Load dialog, Data center tab enables a ride-through CSV (time vs minimum voltage pu). After TDS, Electrisim compares the POI RMS voltage trace to that curve (pass/fail). This models IT constant-P and cooling via ZIP fields; it is not CMLD/PERC1 and not sub-cycle EMT.
Copyrighted WECC/MMWG/ERCOT/ISO base cases, CMLD/PERC1 dynamic load records, transformer inrush, and sub-cycle sag (EMT) require external tools or future ParaEMT integration.
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.
Simulate → Contingency Analysis. Requires a subscription. Confirm a base Load Flow converges first.
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.
vn_kv (kV), not descriptive text from other equipment.After a successful run, Electrisim shows an interactive results window (not only console output):
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.
prepareNetworkData pipeline as Load Flow (buses, lines, transformers, generators, loads, external grid, and so on).deepcopy the network, set that element in_service = False, run runpp.null for the browser).vn_kv on every busbar (numeric kV).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 |
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.
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.
converged: false and an error or convergence violation entry.pandapower
Guided early-design workflow for a utility-scale BESS at an HV point of connection. Enter a short set of project parameters, generate the plant single-line diagram, run predefined load-flow cases, check ratings, and compare plant P/Q capability at the POC with the grid-code Q band from the entered power factor. Aimed at pre-sales / solution-manager checks before detailed engineering.
Simulate → BESS Studies → BESS Preliminary Design.
Q = Pn × tan(acos(PF)) unless you tick Specify Q directly.bessPlantRole). PCS charge/discharge Pmax written to the diagram cannot exceed that unit’s MVA (a converter cannot pass more MW than Sn).External Grid → POC (HV bus, contractual grid connection) → optional HV cable → optional BESS_HV bus at the plant site → HV/MV transformer (OLTC) → MV collection bus → auxiliary load + N strings.
Untick Include HV/MV transformer when the POC is already at MV (about 11–33 kV). The external grid then connects directly to the collection bus, named POC_MV at the MV voltage. The HV transformer, OLTC, tap sweep, and HV cable are omitted. Named cases and the P/Q envelope use that MV bus as the POC.
Tick HV cable between grid POC and plant substation when the POC is at the DSO substation and the transformer sits at the customer site. Named cases and the P/Q envelope still refer to POC_HV; the voltage profile and rating table include the HV line and BESS_HV when present.
Each string: MV cable → MV/LV transformer → LV bus(es) → PCS inverter (the Storage element) → DC bus → battery rack. Optional three-winding skid: one MV winding and two 690 V windings, with 2 or 4 inverters per winding.
| Input | Description |
|---|---|
| Active power at POC / Pn | Agreed POC active power. Named-case P setpoints are capped at this value (split across PCS units). |
| Grid-code power factor | Default 0.95. Sets required |Q| at the POC: |Q| = Pn × tan(acos(PF)). |
| Reactive power at POC | Filled from Pn and PF. Edit only if Specify Q directly is checked. |
| Umin / Unom / Umax | POC voltage levels (pu) for named cases, the P/Q envelope, and the inner U–Q band at full active power. Defaults 0.95 / 1.00 / 1.05 pu. These are the study operating voltages at the grid, not the plant voltage pass band. |
| Plant voltage min / max | Voltage allowance used for named-case pass/fail and SLD result-box colours. Default 0.90–1.10 pu, matching typical bus dialog min/max. Raise the max (for example 1.10 pu) if LV/MV buses may sit above the POC Umax of 1.05 pu. |
| Tap position sweep | Optional. Off by default. When enabled, the study sweeps the HV/MV OLTC at rated discharge. In the results window the table is collapsed under Tap position impact. |
| PCS / Storage | Unit count, MVA, charge/discharge Pmax, LV voltage. PCS, transformer, Pmax, and cable ratings auto-size from Pn, PF, unit count, Umin, aux, and two- versus three-winding topology so the PF |Q| rectangle still fits at Umin (for 50 MW, PF 0.95, 4 units this is about 21.3 MVA / 14.85 MW per PCS). Changing those drivers updates only the rating fields you have not typed in. A typed value is used exactly as entered and remembered in the saved draft. Reset ratings to auto-size clears those typed flags. Optional P–Q capability curve instead of a circular Sn limit. |
| Battery DC Pmax | Tighter of PCS Pmax and this value is applied as the AC Storage P limit and listed in the rating table. It does not supply reactive power — Q comes from the PCS MVA circle. Matching Battery DC Pmax to PCS MW/MVA closes the converter circle at P = Sn; leftover Q at the POC is then transformer, cable, and aux, not the battery. Generate SLD places a PCS inverter, DC bus, and battery rack (Source DC) per string. Those DC elements are shown on the diagram; the AC load-flow does not solve a coupled DC network (isolated DC islands are not compatible with this plant model in pandapower 3.2). |
| HV cable to BESS site | Optional. Inserts HV_Cable and bus BESS_HV between POC_HV and the plant HV/MV transformer. Length, R/X, and thermal kA (auto-sized from plant MVA and HV voltage like MV cables). Use when the agreed POC is not co-located with the BESS substation. |
| HV/MV transformer | On by default. Rating, vk, OLTC tap range and voltage band. Untick Include HV/MV transformer for a direct MV POC (about 11–33 kV): the external grid connects to POC_MV and there is no HV transformer. |
| MV cables and string transformers | Length, R/X, thermal rating; two-winding or three-winding skid (2 or 4 PCS per LV winding). String transformer MVA and cable kA default from the selected topology (one PCS per two-winding trafo, or all PCS on the skid for three-winding). |
| Auxiliary load | P and Q on the MV collection bus (included in POC achieved P/Q). |
|Q|/Pn = tan(acos(PF)); 0.95 → about 0.329). The hatched outer band is the plant voltage allowance (default 0.90–1.10 pu). Axis ticks include 0.90 / 0.95 / 0.96 / 1.04 / 1.05 / 1.10 and ±|Q|/Pn. The results window shows a COMPLIANT / NON-COMPLIANT badge, a KPI, and a per-voltage table with separate discharge and charge columns; the verdict needs both directions to cover the band. Wide markers mean the PCS MVA is large relative to Pn — at full P the Q headroom is √(Sn² − Pn²), so a PCS sized close to Pn gives a narrow U–Q plot. Click a marker to open that capacitive or inductive load-flow at that voltage.KPIs at the top include named-case pass/fail counts, requested POC target met, P/Q envelope, and U–Q at full P.
The Named load-flow cases table lists P/Q at the POC, losses, OLTC tap after that case, pass/fail, and the limiting element. Pass/Fail reports thermal and voltage limits only — it is not a check that the case reached Pn, so a Rated Discharge delivering 22.9 MW against a 23.5 MW Pn still passes when nothing is overloaded (the difference is losses and auxiliaries). Delivery of the requested POC P/Q is the separate POC target met KPI for the 12 target cases. Voltage pass/fail uses the plant voltage min/max you entered (default 0.90–1.10 pu), not POC Umin/Umax. Click any row to paint that load-flow onto the diagram result boxes (voltages, loadings, P/Q, tap), including LV buses. The selected row stays highlighted. Click a limiter or bus name to select that element.
Click a named-case marker on the P/Q capability envelope at POC (square = PF corner, diamond = rated P at unity PF) or a marker on U–Q at full P to open that named load-flow. Hover an envelope vertex for its P/Q/U; those nodes are the capability sweep, not the 18 named cases. The pointer becomes a hand on a named-case hit; the selected point is ringed. The results window parks so you can read the SLD boxes (use the restore chip to return).
Clicking outside the results window, or Minimize, parks the dialog so you can inspect the SLD and come back. Maximize fills the screen with the results window; each of P/Q capability envelope at POC and U–Q at full P also has its own Maximize for a full-screen chart (Restore or Esc returns). On both charts, + / − or the mouse wheel zoom toward the pointer, drag pans, and Reset view restores the full characteristic. Chart clicks work in the full-screen chart view as well. Close dismisses the study results.
If the requested POC P/Q was delivered but named cases still fail thermal or voltage limits, a note points to the limiter column (often an undersized MV cable). If every named case fails on PCS apparent power with Q near zero and the rating table shows PCS MVA smaller than PCS MW (for example 9.3 MVA / 14.8 MW), a leftover typed PCS rating is smaller than the auto-sized nameplate — use Reset ratings to auto-size, then Generate / Update SLD and re-run.
p_mw > 0 = charge, p_mw < 0 = discharge.Notes
Related: Storage; Storage Q capability; Three Winding Transformer; Battery Sizing; Grid Code Compliance (P-Q).
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.
Simulate → Battery Sizing for Busbar Requirements (pandapower).
Electrisim does not compute switchgear or busbar conductor ratings (thermal withstand, IEC 61439). Use a separate equipment study for ampacity.
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.
| 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) |
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.
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 |
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.
When running multiple scenarios, the results include two visualization plots:
Both plots include grid lines, axis labels, and scenario name annotations for easy identification.
The sizing algorithm implements a proportional controller with the following characteristics:
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.delta_p = -kp_p × error_p × dampingdelta_q = -kp_q × error_q × damping|error_p| < tolerance AND |error_q| < toleranceImportant Notes:
Based on: pandapower control framework with custom BESS control controller implementation.
Algorithm Type: Iterative proportional control with Newton-Raphson power flow solver.
Documentation References: 📘 pandapower Control Documentation 📘 pandapower Storage Element
Related studies: BESS Dispatch Reversal; BESS Preliminary Design; Storage Q capability.
OpenDSS
Time-domain P-step (charge ↔ discharge) on a selected Storage unit, co-simulated with OpenDSS. Use it to check POC voltage during FCR / primary-market reversals (for example +45 MW → −45 MW in 10 s). Plots are V(t), P(t), and Q(t). Sign convention matches Storage: +P charge, −P discharge; +Q absorb, −Q inject.
Simulate → BESS Studies → BESS Dispatch Reversal (also on the frequency-study menu).
sn_mva, Pmax), Q capability, and Inverter Control (PF / Volt-VAR / watt priority).The Storage Use Q capability curve and Voltage-dependent Q envelope checkboxes define the PCS envelope. They change V(t)/Q(t) only when Q is taken from that envelope, or when a non-unity PF / Volt-VAR setpoint hits the limit. Unity PF with inverter Q stays at Q ≈ 0.
| Q source | What is dispatched |
|---|---|
| Storage inverter settings | Fixed PF, manual q_mvar, or OpenDER Volt-VAR. Envelope only clips Q. |
| Q capability — inject max | Q = Qmin from the P–Q curve at the current P (and U if voltage-dependent). Default when the curve is enabled. Use this to see the envelope on the Q plot. |
| Q capability — absorb max | Q = Qmax from the curve (absorb). |
Results show dashed Qmin/Qmax on the Q(t) chart. P command is thick dashed orange under the BESS P trace. Choose the plant HV POC; a slack/source bus stays almost flat at 1.0 pu.
Related: Storage, Battery Sizing, BESS Preliminary Design. OpenDER: EPRI OpenDER.
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.
| 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.
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:
Parameter importance:
pandapower OpenDSS
A bus is a connection point (node / busbar). Every other element must attach to at least one bus. Load-flow results show voltage magnitude and angle here — so set rated voltage (vn_kv) correctly before you run anything. The same result box also shows net bus P and Q; see On-diagram busbar results for the sign convention and how several generators or BESS units on one busbar are aggregated.
Documentation References: 📘 pandapower Bus 📗 OpenDSS Documentation
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | User-defined name for the bus (optional). Used in result summaries and tables (e.g. OpenDSS harmonic analysis) so you can identify nodes by project labels, not only internal IDs. | string | - | Bus name | 🔴 PF, SC, OPF, Harmonics |
| vn_kv | Rated voltage in kV | float | > 0 | kVBase | 🔴 PF, SC, OPF |
| type | Bus type (b = busbar, n = node, m = muff) | string | b, n, m | - | 🟡 PF, SC, OPF |
| max_vm_pu | Maximum voltage magnitude in per unit — enforced as net.bus.max_vm_pu in AC OPF (pandapower). Set on the Bus dialog OPF tab; new buses default to 1.1 p.u. |
float | > 0 | - | 🔴 OPF |
| min_vm_pu | Minimum voltage magnitude in per unit — enforced as net.bus.min_vm_pu in AC OPF (pandapower). Set on the Bus dialog OPF tab; new buses default to 0.9 p.u. |
float | > 0 | - | 🔴 OPF |
| in_service | Specifies if the bus is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
OPF note: Bus min_vm_pu / max_vm_pu are sent to the pandapower backend with each study. If limits are missing or inconsistent (e.g. max ≤ min) on a bus, Electrisim substitutes a wide 0.8–1.2 p.u. band for that bus only so AC OPF can converge on stressed networks.
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
| 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 |
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
| 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 |
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 |
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
| 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 |
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
| 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 |
pandapower OpenDSS
Static generators represent generators with static (PQ) behavior — for example photovoltaic systems or small generation units. For wind turbines with an editable P–v power curve, prefer the dedicated Wind Turbine element. In OpenDSS, a static generator is a Generator with Model=1 (constant kW and kvar), not a voltage-controlled Model=3 bus. Both static generators and wind turbines can be selected in Grid Code Compliance (P-Q).
Documentation References: 📘 pandapower Static Generator 📗 OpenDSS Generator
| 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 |
pandapower OpenDSS
A dedicated wind generation element based on the Static Generator model. Active power for load flow is always derived from a wind power curve P(v) and the configured wind speed — you do not set p_mw independently. Changing wind speed (in the element dialog or in Component Data) updates P [MW] immediately from the curve.
How load flow uses it: Electrisim interpolates the curve at the current wind speed (linear segments or constant/stepwise between knots) and sends the resulting p_mw to the engine. In pandapower this is a Static Generator (sgen). In OpenDSS it is a Generator with Model=1 (constant kW and kvar — a PQ injection, matching pandapower sgen), not Model=3 (constant kW / constant kV). Vminpu is kept wide so collector undervoltage does not convert the unit to constant-Z and collapse P. Reactive power and other Static Generator parameters (ratings, short-circuit data, ANDES dynamics kind, etc.) work the same way as on a Static Generator. Wind turbines can be selected together with static generators in Grid Code Compliance (P-Q).
Do you need a Wind Turbine Controller? For a normal snapshot load flow, no — the turbine already computes P from its own curve and speed. Use a Wind Turbine Controller (steady-state) only if you want a separate Pref override (controller wind speed or controller curve). Use a Wind Turbine Controller (dynamic) for averaging / gradient limiting in time-domain studies.
Palette: Sources (or Electrical abstract sources) → Wind Turbine. A worked example is File → New → offshore wind farm 1 GW (rev 6; 100 km export).
Documentation References: 📘 pandapower Static Generator 📗 OpenDSS Generator
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.
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):
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
| 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 |
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.
Double-click the External Grid and open the Short Circuit tab. Positive-sequence strength is s_sc_max_mva / s_sc_min_mva with R/X ratios rx_max / rx_min. Zero-sequence ratios are required for IEC 60909 single-phase faults:
r0x0_max) and Max X0/X Ratio (x0x_max).r0x0_min) and Min X0/X Ratio (x0x_min). Three-phase and two-phase minimum studies do not use these columns; single-phase minimum does.If min zero-sequence ratios are omitted on an older diagram, Electrisim reuses the corresponding max ratios. Typical pandapower example values when no utility data is available: R0/X0 = 0.1, X0/X = 1.0. Related study: Short Circuit.
Documentation References: 📘 pandapower External Grid 📗 OpenDSS Vsource
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the external grid | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the external grid is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| vm_pu | Voltage magnitude setpoint in per unit | float | > 0 | pu (Vsource) | 🔴 PF, SC, OPF |
| va_degree | Voltage angle in degrees | float | -360 to 360 | angle | 🟡 PF, SC, OPF |
| s_sc_max_mva | Maximum short-circuit apparent power in MVA | float | > 0 | MVAsc3 | 🔴 SC |
| s_sc_min_mva | Minimum short-circuit apparent power in MVA | float | > 0 | MVAsc1 | 🟡 SC |
| rx_max | Maximum R/X ratio for positive sequence short-circuit | float | ≥ 0 | R1/X1 | 🔴 SC |
| rx_min | Minimum R/X ratio for positive sequence short-circuit | float | ≥ 0 | R1/X1 | 🟡 SC |
| r0x0_max | Max R0/X0 Ratio on the Short Circuit tab. Zero-sequence R0/X0 for IEC 60909 single-phase maximum short-circuit. | float | ≥ 0 | R0/X0 | 🟡 SC |
| x0x_max | Max X0/X Ratio on the Short Circuit tab. Zero- to positive-sequence reactance ratio (X0/X1) for IEC 60909 single-phase maximum short-circuit. Typical value 1.0. | float | ≥ 0 | X0/X1 | 🟡 SC |
| r0x0_min | Min R0/X0 Ratio on the Short Circuit tab. Zero-sequence R0/X0 for IEC 60909 single-phase minimum short-circuit. Required by pandapower for that case; if omitted, Electrisim copies r0x0_max. |
float | ≥ 0 | R0/X0 | 🟡 SC |
| x0x_min | Min X0/X Ratio on the Short Circuit tab. Zero- to positive-sequence reactance ratio (X0/X1) for IEC 60909 single-phase minimum short-circuit. Required by pandapower for that case; if omitted, Electrisim copies x0x_max. Typical value 1.0. |
float | ≥ 0 | X0/X1 | 🟡 SC |
| spectrum | Harmonic voltage spectrum for OpenDSS harmonic analysis (e.g., "defaultvsource") | string | defaultvsource, none, custom | spectrum (Vsource) | 🟡 Harmonics |
| cost_per_unit_by_currency | Cost per unit for economic analysis (in selected currency) | float | ≥ 0 | - | 🟢 Economic |
| in_service | Specifies if the external grid is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
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
| 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 |
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
| 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 |
pandapower OpenDSS
Generators represent synchronous generators with dynamic behavior. They are typically used for large power plants and have voltage control capabilities. For North American short-circuit studies, set ANSI machine type on the generator (used by ANSI/IEEE C37, beta).
Documentation References: 📘 pandapower Generator 📗 OpenDSS Generator
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the generator | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the generator is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| p_mw | Active power setpoint in MW | float | - | kW | 🔴 OPF |
| vm_pu | Voltage magnitude setpoint in per unit | float | > 0 | kV (model=3) | 🔴 PF, SC, OPF |
| sn_mva | Rated apparent power in MVA | float | > 0 | kVA | 🟡 PF, SC, OPF |
| min_q_mvar | Minimum reactive power in Mvar | float | - | kvarmin | 🔴 OPF |
| max_q_mvar | Maximum reactive power in Mvar | float | - | kvarmax | 🔴 OPF |
| scaling | Scaling factor for power | float | > 0 | - | 🟢 PF, SC, OPF |
| slack | Whether this is the slack generator | boolean | True/False | - | 🟡 PF, SC, OPF |
| vn_kv | Rated voltage in kV | float | > 0 | kV | 🔴 SC |
| xdss_pu | Subtransient reactance in per unit for short-circuit | float | > 0 | Xd'' | 🔴 SC |
| rdss_ohm | Subtransient resistance in Ohm for short-circuit | float | ≥ 0 | - | 🟡 SC |
| ansi_machine_type | Rotating-machine class for ANSI/IEEE C37 reactance multipliers (turbo, hydro with amortisseur, hydro, synchronous motor). Used only when Short Circuit is run with the ANSI/IEEE C37 (beta) tick. See ANSI/IEEE C37. | string | turbo, hydro_amortisseur, hydro, sync_motor | - | 🟡 SC (ANSI) |
| cos_phi | Rated power factor (cosine phi) | float | 0-1 | pf | 🟡 SC |
| pg_percent | Generator participation factor in percent for power dispatch | float | 0-100 | - | 🟡 OPF |
| in_service | Specifies if the generator is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
| 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.
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.
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
| 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 |
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the shunt reactor | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the reactor is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| q_mvar | Reactive power in Mvar (negative = inductive/absorbing) | float | < 0 | kvar (Reactor) | 🔴 PF, SC, OPF |
| p_mw | Active power losses in MW (usually small) | float | ≥ 0 | - | 🟡 PF, SC, OPF |
| vn_kv | Rated voltage in kV | float | > 0 | kV | 🟡 PF, SC, OPF |
| in_service | Specifies if the reactor is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
| step | Current shunt step position (integer steps). Used with max_step and, when the characteristic table is off, scales the base P/Q from the Power tab. |
float / int | 0 … max_step |
— | 🟡 PF, SC, OPF |
| max_step | Maximum shunt step. Defines the upper range of valid steps; use with the characteristic table and with Fill steps 0…max step in the shunt dialog. | float / int | ≥ 0 | — | 🟡 PF, SC, OPF |
| step_dependency_table | If enabled, P and Q at v = 1.0 p.u. for each step come from the shunt characteristic table (not from a single P/Q times step). Sent to pandapower as step_dependency_table with a shunt_characteristic_table block. OpenDSS applies the same table when creating the Reactor. |
boolean | True/False | kvar at the selected step (Reactor) | 🟢 PF (pandapower and OpenDSS) |
| shunt_characteristic_table_json | JSON array of rows { "step", "p_mw", "q_mvar" }: reactive (and loss) shunt power at 1.0 p.u. for that step. Should include every step you use, typically 0 through max_step. Both engines use the same JSON. |
string (JSON) | — | — | 🟢 PF (pandapower and OpenDSS) |
| discrete_shunt_control | Move the shunt step so the bus voltage at the shunt tracks vm_set_pu. Pandapower uses DiscreteShuntController. OpenDSS iterates the same step table after each snapshot solve. For pandapower load flow, enable Shunt reactor tap changer under Include controller. For Grid Code Compliance (P-Q), enable Shunt reactor control. |
boolean | True/False | — | 🟢 PF (pandapower controlled run; OpenDSS snapshot) |
| vm_set_pu | Voltage setpoint (p.u.) for discrete shunt control. | float | typ. 0.9–1.1 | — | 🟢 PF (pandapower and OpenDSS) |
| shunt_control_increment | How many step positions the controller may change per iteration. | integer | ≥ 1 | — | 🟢 PF (pandapower and OpenDSS) |
| shunt_control_tol | Voltage band (p.u.) around vm_set_pu where no action is taken. |
float | ≥ 0 | — | 🟢 PF (pandapower and OpenDSS) |
| shunt_reset_at_init | If set, the controller may reset the shunt step at init (pandapower reset_at_init). |
boolean | True/False | — | 🟢 PF (pandapower) |
| line_flow_step_control | Set shunt step from active-power bands on a reference line (variable shunt reactor / VSR). Enable Shunt reactor tap changer under Include controller so pandapower load flow applies the lookup; enable Shunt reactor control in Grid Code Compliance (P-Q). OpenDSS snapshot load flow applies the same bands after the solve. | boolean | True/False | — | 🟢 PF (pandapower controlled run; OpenDSS snapshot) |
| line_flow_reference_line_id | Diagram cell of the line whose P is compared with the band table. | string (cell id) | — | — | 🟢 PF (pandapower and OpenDSS) |
| line_flow_step_table_json | JSON array of bands { "p_mw_min", "p_mw_max", "step" }. The last band includes the upper bound. Combined with line_flow_p_use_abs and line_flow_p_reference (p_from_mw or p_to_mw). |
string (JSON) | — | — | 🟢 PF (pandapower and OpenDSS) |
The dialog is organised in three tabs. The relationship between “static” shunt data and “control” is:
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).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.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).step.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.step; Discrete shunt control changes step so the shunt bus voltage moves toward vm_set_pu. When both are on, the controller only updates step; the injections at that step still follow the table. For pandapower load flow, tick Shunt reactor tap changer under Include controller. For Grid Code Compliance (P-Q), tick Shunt reactor control in that study dialog. OpenDSS snapshot load flow runs the same loop when the option is enabled on the shunt.step from the band table (typical VSR behaviour). This is also gated by Shunt reactor tap changer on pandapower load flow, and by Shunt reactor control in Grid Code Compliance (P-Q); OpenDSS snapshot applies it after the solve.Summary. Use the Power tab for a simple fixed or step-scaled shunt; add the characteristic table when each step has different P/Q at 1 p.u.; use discrete shunt control for a voltage target; use Line P → shunt step for flow-based VSR tap. If a table and a controller are both enabled, the table provides the per-step model and the controller selects the step. All of these are properties of the shunt on the single-line diagram; the pandapower load-flow dialog or Grid Code Compliance (P-Q) turns controller execution on or off for the run.
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
| 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 |
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
| 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 |
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
| 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 |
pandapower OpenDSS
Storage elements represent battery energy storage systems (BESS) or other energy storage technologies that can both consume and generate power. Electrisim uses a unified Storage element that maps to both pandapower and OpenDSS. Dialog tabs: Power, Energy, Configuration, Optimization (OPF), Q capability (PCS P–Q envelope), OpenDSS Parameters, Inverter Control, and Economic.
Documentation References: 📘 pandapower Storage 📗 OpenDSS Storage 📗 OpenDSS Storage Properties
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the storage | string | - | name | 🔴 PF, OPF |
| bus | Bus the storage is connected to | integer | - | Bus1 | 🔴 PF, OPF |
| p_mw | Active power in MW (positive = charging/consuming, negative = discharging/generating). OpenDSS sign is converted automatically. After load flow, the storage result box shows this P; the connected busbar shows the sum of all devices on that bus (see busbar result boxes). | float | - | kW, kWRated (Storage) | 🔴 PF, OPF |
| q_mvar | Reactive power in Mvar when Q setpoint mode is manual (positive = absorbing, negative = supplying). For curve-based Q, use Q setpoint mode or the dispatch-reversal inject/absorb options. |
float | - | kvar (Storage) | 🟡 PF, OPF |
| q_setpoint_mode | Load-flow Q when Use Q capability curve is on: manual uses q_mvar; capacitive_max uses Qmax (absorb); inductive_max uses Qmin (inject). Dispatch reversal can also command inject/absorb max from the same envelope. |
string | manual, capacitive_max, inductive_max | — | 🟡 PF |
| max_e_mwh | Maximum energy capacity in MWh (rated storage capacity) | float | > 0 | kWhrated | 🔴 OPF |
| min_e_mwh | Minimum energy to keep in reserve (MWh). Maps to OpenDSS %reserve = (min_e_mwh / max_e_mwh) × 100. When min_e_mwh ≥ max_e_mwh, %reserve is not applied. | float | ≥ 0 | %reserve | 🔴 OPF |
| soc_percent | State of charge in percent (0–100) | float | 0-100 | %stored | 🟡 OPF |
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| sn_mva | Nominal / inverter rating in MVA. Maps to OpenDSS kVA. Used as kWRated when p_mw = 0. Together with P this is the kVA circle √(P²+Q²) ≤ Sn. A vendor D-shape, leftover Q at rated P, STATCOM Q at idle, voltage derate, and P vs Q priority need the Q capability tab and watt priority — kW and kVA alone are not a full PCS model. | float | > 0 | kVA (Storage) | 🟡 PF, OPF |
| conn | Winding connection type (wye or delta) | string | wye, delta | conn | 🟡 PF (OpenDSS) |
| phases | Number of electrical phases (1–3) | integer | 1–3 | phases | 🟡 PF (OpenDSS) |
| scaling | Scaling factor for p_mw and q_mvar (pandapower only) | float | > 0 | - | 🟡 PF, OPF |
| type | Optional string to classify the storage (e.g., Li-Ion, Flow). Informational only. | string | - | - | 🟡 PF, OPF |
| in_service | Specifies if the storage is in service | boolean | True/False | enabled | 🟡 PF, OPF |
| 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 |
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) |
The Q capability tab is the four-quadrant PCS envelope (not the wind-turbine ±0.95 PF triangle). Enable Use Q capability curve so load flow, OpenDSS kvarMax/kvarMaxAbs, OpenDER NP_Q_MAX_*, and BESS Dispatch Reversal apply Qmin/Qmax at the operating P.
kW + kVA is only the inverter circle √(P²+Q²) ≤ Sn. That is enough for a first check at unity PF (for example 45 MW on 50 MVA leaves about 22 MVAr of unused Q). It is not a full PCS model when you need a vendor D-shape, leftover Q at rated P, STATCOM Q at idle, voltage dependence of the envelope, or a rule for what is clipped at Sn (P vs Q).
Chart: P from −Pmax (discharge) to +Pmax (charge). Built-in PCS circle is Q = ±√(Sn²−P²) with a vertical cut at Pmax (full Q at P = 0). PCS D-shape holds Q at 0.9·Sn until the current circle binds. Custom is a vendor JSON table. Ratings come from Configuration sn_mva and OPF charge/discharge Pmax when set.
| Parameter | Description | Type | Value Range | Simulation Types |
|---|---|---|---|---|
| reactive_capability_curve | Use Q capability curve. Enforce Qmin/Qmax vs P. Off = kVA circle from sn_mva only (plus watt priority if on). |
boolean | True/False (default False) | 🟡 PF, dispatch reversal |
| q_cap_voltage_dependent | Voltage-dependent Q envelope. Scale Qmin/Qmax with terminal voltage (capability vs U). Full Q at 1.00 pu; reduced toward 0.88 / 1.10 pu (already scaled at 0.98 / 1.02). This is not Volt-VAR droop (that is Inverter Control). | boolean | True/False (default False) | 🟡 PF, dispatch reversal |
| q_capability_preset | PCS envelope: pcs_circle (typical BESS), pcs_d_shape (flat Q then circle), or custom (edit JSON). |
string | pcs_circle, pcs_d_shape, custom | 🟡 PF, dispatch reversal |
| curve_style | Interpolation of custom JSON knots. | string | straightLineYValues, constantYValue | 🟡 PF |
| q_capability_curve_json | Points {p_mw, q_min_mvar, q_max_mvar}. Four-quadrant when P spans negative (discharge) to positive (charge). |
JSON array | — | 🟡 PF, dispatch reversal |
OpenDSS InvControl (and OpenDER on dispatch reversal) pick the Q setpoint inside the envelope. Watt priority chooses which axis is sacrificed when √(P²+Q²) would exceed Sn.
| Parameter | Description | Type | Value Range | OpenDSS Property | Simulation Types |
|---|---|---|---|---|---|
| inv_control_mode | NONE, Fixed Q, Fixed PF, Volt-VAR, Volt-Watt, Watt-PF, Watt-VAR. Dispatch reversal with OpenDER disables native InvControl and maps these modes into OpenDER. | string | NONE, FIXEDQ, FIXED_PF, VOLTVAR, … | InvControl Mode | 🟡 PF (OpenDSS), dispatch reversal |
| pf / pf_q_mode | Discharge PF (P < 0). Lagging = absorb Q; leading = inject Q. Enter 0.85–1.0, not a negative PF. | float / string | 0.85–1.0; lagging, leading | pf | 🟡 PF (OpenDSS), dispatch reversal |
| pf_charge / pf_charge_q_mode | Charge PF (P > 0). Same Q-direction convention as discharge PF. | float / string | 0.85–1.0; lagging, leading | pf (charge) | 🟡 PF (OpenDSS), dispatch reversal |
| watt_priority | When hypot(P, Q) would exceed sn_mva: on = keep P and clip Q (typical FCR / energy dispatch); off = keep Q and clip P. |
boolean | True/False (default False) | WattPriority | 🟡 PF, dispatch reversal |
| vv_xarray / vv_yarray | Volt-VAR droop (control), IEEE 1547 preset available. Distinct from the voltage-dependent capability envelope. | string | pu V / pu Q points | InvControl vvc_* | 🟡 PF (OpenDSS), dispatch reversal |
The following implementation details ensure consistent results between Pandapower and OpenDSS for storage elements:
kWRated (inverter capacity) and kW (requested dispatch power) are set explicitly. The state (DISCHARGING/CHARGING/IDLING) is derived from the sign of p_mw.min_e_mwh ≥ max_e_mwh, the OpenDSS %reserve parameter is not set. This prevents blocking discharge in snapshot power flow when the reserve would otherwise lock 100% of stored energy.conn (wye/delta) and phases (1–3) parameters are passed to OpenDSS for correct modeling of single-phase or delta-connected storage.kvarMax / kvarMaxAbs. Optional voltage derate scales that band. Watt priority keeps P and clips Q at Sn (or the reverse if off).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:
All four elements are pre-wired with correct connection points. Result placeholders for load flow and short-circuit analysis appear automatically for each busbar, the transformer, and the storage unit. You can connect the BESS AC block to your existing network by linking BESS BUSBAR 1 to your MV grid (e.g., 33 kV).
If you attach more than one Storage unit to the same LV busbar (BESS BUSBAR 2), load-flow P on that busbar is the net of those units — for example two units discharging at 1.75 MW each give −3.5 MW on the 0.69 kV bus, not −7 MW. The transformer LV/HV flows follow the same net. Details: On-diagram busbar results.
Documentation References: 📗 Storage 📗 OpenDSS Transformer 📗 Storage Properties
Note: The BESS AC Block is a composite palette template (MV bus, step-up transformer, LV bus, and Storage). It is not a separate backend element type — both pandapower and OpenDSS receive the four connected standard elements. Default drop values: MV bus 33 kV, LV bus 0.69 kV, transformer 33/0.69 kV, 1 MVA. You can modify all parameters to match your project.
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).
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:
Averaging and gradient limiting live on the separate dynamic controller.
| 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.
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.
| 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 |
pandapower
Station / park controller for pandapower load flow. It coordinates reactive power of linked Wind Turbines and Static Generators to meet a plant-level target. The same object is used by Grid Code Compliance (P-Q) and Grid Code Compliance (V-Q) when Plant Q dispatch is set to Park Controller (constant Q at the point of connection during the capability search).
Palette: Controls → Steady-state → Pandapower. Diagram label defaults to ParkController (steady-state).
Control modes (General tab):
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).
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:
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.
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
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
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
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
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.
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
| 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 |
pandapower
TCSCs are FACTS devices that provide controllable series compensation to regulate power flow and improve transmission capacity.
Documentation References: 📘 pandapower TCSC 📗 OpenDSS Documentation
| 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 |
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
| 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 |
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
| 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 |
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
| 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 |
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
| 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 |
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
| 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 |
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
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the switch | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the switch is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| element | Name/index of the element the switch controls (a line, transformer, three-winding transformer, or bus) | string/integer | - | - | 🔴 PF, SC, OPF |
| et | Element type the switch is connected to: "l" (line), "t" (transformer), "t3" (three-winding transformer), "b" (bus-bus) | string | l, t, t3, b | - | 🔴 PF, SC, OPF |
| closed | Whether the switch is closed (True) or open (False) | boolean | True/False | open/close action | 🔴 PF, SC, OPF |
| type | Type of switch: "CB" (Circuit Breaker), "LS" (Load Switch), "LBS" (Load Break Switch), "DS" (Disconnector) | string | CB, LS, LBS, DS | - | 🟡 PF, SC, OPF |
| z_ohm | Impedance of the switch in Ohm (when closed) | float | ≥ 0 | - | 🟡 PF, SC, OPF |
| in_ka | Rated current of the switch in kA | float | > 0 | normamps | 🟡 PF, SC, OPF |
| in_service | Specifies if the switch is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
| ansi_device_class | ANSI/IEEE C37 device class for duty comparison: auto (from voltage), HV C37.010, LV C37.13, MCCB UL 489, or generator C37.013. Short Circuit tab. See ANSI/IEEE C37. | string | auto, hv_c37_010, lv_c37_013, mccb_ul_489, generator_c37_013 | - | 🟡 SC (ANSI) |
| interrupting_rating_ka | Breaker interrupting rating in kA (ANSI duty check) | float | ≥ 0 | - | 🟡 SC (ANSI) |
| momentary_rating_ka | Breaker momentary / close-and-latch rating in kA (ANSI duty check) | float | ≥ 0 | - | 🟡 SC (ANSI) |
When running ANSI/IEEE C37 short circuit (beta), use the Switch dialog Short Circuit tab to set device class and ratings. The results dialog then compares calculated interrupting and momentary duties against those ratings (pass/fail).
When running the Protection Coordination Study, assign a device on the Switch dialog Protection tab. Key fields:
| Parameter | Description |
|---|---|
| protection_type | none, ocr, fuse, earth_fault, directional, differential, or distance |
| fuse_type, rated_i_a, fuse_custom_std_json | Library fuse name or custom I–t curve JSON and rated current (fuse mode) |
| oc_relay_type | DTOC (definite time), IDMT (inverse), or IDTOC (combined). Manual grading and manual pickup (A) are supported for all three, including a complete IDTOC TCC. See Overcurrent relays (OCR). |
| curve_type, tms, t_grade, t_g, t_gg, t_diff | IEC 60255 or IEEE C37.112 inverse curve and timing / grading settings (OCR mode) |
| pickup_mode, I_s_a, I_g_a, I_gg_a | Automatic (from line ratings) or manual pickup currents in amperes: Is (IDMT/IDTOC), I> (DTOC/IDTOC), I>> (DTOC/IDTOC) |
| overload_factor, ct_current_factor, safety_factor | Factors for automatic pickup calculation |
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
| 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 |
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
| 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 |
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.
phases=1) distribution elementsUse the five 1ph elements to build radial feeders such as: Source 1ph → Transformer 1ph → Line 1ph → Load 1ph, with optional Generator 1ph for distributed generation. Each exposes Phase (1, 2, or 3) and Connection (wye L-N or delta L-L) so the correct OpenDSS bus terminal (bus.1, bus.1.2, etc.) is used.
Tip: On radial single-phase lines, prefer wye (L-N) for loads and generators. Delta connection requires two energized phase nodes on the bus; if only one node is energized (typical for Line 1ph with wye connection), delta-connected loads may draw little or no power. Electrisim automatically switches delta loads and generators to wye on radial feeders and reports a warning in the load-flow results.
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 are organized by analysis type in the Electrisim PVSystem dialog:
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
In Electrisim, the PVSystem element is configured via the PVSystem dialog with parameters organized into tabs:
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.
| Parameter | Description | Type | Value Range | OpenDSS Property | Simulation Types |
|---|---|---|---|---|---|
| name | Element name | string | - | name | 🔴 PF |
| bus | Connected bus | reference | - | Bus1 | 🔴 PF |
| p_kw | Active power demand (kW) | float | ≥ 0 | kW | 🔴 PF |
| q_kvar | Reactive power demand (kVar) | float | - | kvar | 🟡 PF |
| kv | Rated voltage (kV L-N or L-L). Empty = bus nominal. | float | > 0 | kV | 🟡 PF |
| pf | Power factor (UI helper when deriving Q from P) | float | 0–1 | pf | 🟢 PF |
| phase | OpenDSS phase node (1, 2, or 3) | integer | 1–3 | Bus1 terminal | 🔴 PF |
| conn | Wye (L-N) or delta (L-L) | string | wye / delta | conn | 🔴 PF |
| spectrum | Harmonic spectrum name | string | - | spectrum | 🟢 HA |
| pctSeriesRL | Series R-L percentage for harmonics | float | 0–100 | %SeriesRL | 🟢 HA |
| in_service | Include in simulation | boolean | True/False | enabled | 🟡 PF |
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.
| Parameter | Description | Type | Value Range | OpenDSS Property | Simulation Types |
|---|---|---|---|---|---|
| name | Element name | string | - | name | 🔴 PF, SC |
| bus | Connected bus | reference | - | Bus1 | 🔴 PF, SC |
| vm_pu | Voltage magnitude setpoint (pu) | float | > 0 | pu | 🔴 PF, SC |
| va_degree | Voltage angle (degrees) | float | -360 to 360 | angle | 🟡 PF |
| s_sc_max_mva | Short-circuit MVA for Thevenin impedance | float | > 0 | mvasc3 / R1,X1 | 🔴 SC |
| phase | OpenDSS phase node (1, 2, or 3) | integer | 1–3 | Bus1 terminal | 🔴 PF, SC |
| conn | Wye (L-N) or delta (L-L) | string | wye / delta | conn | 🔴 PF, SC |
| in_service | Include in simulation | boolean | True/False | enabled | 🟡 PF, SC |
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.
| Parameter | Description | Type | Value Range | OpenDSS Property | Simulation Types |
|---|---|---|---|---|---|
| name | Element name | string | - | name | 🔴 PF |
| bus | Connected bus | reference | - | Bus1 | 🔴 PF |
| p_kw | Generated active power (kW) | float | ≥ 0 | kW | 🔴 PF |
| q_kvar | Generated reactive power (kVar) | float | - | kvar | 🟡 PF |
| kv | Rated voltage (kV). Empty = bus nominal. | float | > 0 | kV | 🟡 PF |
| sn_kva | Rated apparent power (kVA), optional | float | > 0 | kVA | 🟡 PF |
| model | OpenDSS generator model (1 = constant P&Q) | integer | 1, 3, … | Model | 🔴 PF |
| phase | OpenDSS phase node (1, 2, or 3) | integer | 1–3 | Bus1 terminal | 🔴 PF |
| conn | Wye (L-N) or delta (L-L) | string | wye / delta | conn | 🔴 PF |
| spectrum | Harmonic spectrum name | string | - | spectrum | 🟢 HA |
| in_service | Include in simulation | boolean | True/False | enabled | 🟡 PF |
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.
| Parameter | Description | Type | Value Range | OpenDSS Property | Simulation Types |
|---|---|---|---|---|---|
| name | Element name | string | - | name | 🔴 PF |
| busFrom / busTo | HV and LV buses (auto-sorted by voltage) | reference | - | Buses | 🔴 PF |
| sn_kva | Rated apparent power (kVA) | float | > 0 | kVAs | 🔴 PF |
| vk_percent | Short-circuit voltage (%) | float | > 0 | XHL | 🔴 PF |
| vkr_percent | Resistive part of vk (%) | float | ≥ 0 | %Rs | 🟡 PF |
| vn_hv_kv | HV rated voltage (kV) | float | > 0 | kVs (HV) | 🔴 PF |
| vn_lv_kv | LV rated voltage (kV) | float | > 0 | kVs (LV) | 🔴 PF |
| phase | OpenDSS phase node (1, 2, or 3) | integer | 1–3 | Bus terminals | 🔴 PF |
| conn | HV connection: wye or delta | string | wye / delta | Conns | 🔴 PF |
| tap_pos | Tap changer position | integer | - | Taps | 🟡 PF |
| in_service | Include in simulation | boolean | True/False | enabled | 🟡 PF |
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.
| Parameter | Description | Type | Value Range | OpenDSS Property | Simulation Types |
|---|---|---|---|---|---|
| name | Element name | string | - | name | 🔴 PF |
| busFrom / busTo | From and to buses | reference | - | Bus1, Bus2 | 🔴 PF |
| length_km | Line length (km) | float | ≥ 0 | Length (units=km) | 🔴 PF |
| r_ohm_per_km | Series resistance (Ω/km) | float | ≥ 0 | R1 | 🔴 PF |
| x_ohm_per_km | Series reactance (Ω/km) | float | - | X1 | 🔴 PF |
| c_nf_per_km | Shunt capacitance (nF/km), 0 = ignored | float | ≥ 0 | C1 | 🟢 PF |
| phase | OpenDSS phase node (1, 2, or 3) | integer | 1–3 | Bus terminals | 🔴 PF |
| conn | Wye (L-N) or delta (L-L) at both ends | string | wye / delta | — | 🔴 PF |
| in_service | Include in simulation | boolean | True/False | enabled | 🟡 PF |
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.
File → Import from → Device... (or Open from device) and pick a file on your computer.
.py file that defines a net object, or an OpenDSS .dss circuit file.Supported native formats:
net object. The network will be converted to a diagram with buses, lines, transformers, loads, generators, and other elements.After import, the diagram is created automatically on the canvas. You can then run simulations, modify parameters, or export the model.
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.
Edit menu → Component Data...
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.
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.
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.
Open the Map Editor from the application menu, then Generate Electrical Model when the layout is ready.
The Maps feature is especially useful for:
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.
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.
You do not install these libraries locally. Electrisim calls them on the server (or in the packaged app) after you click Run.
You can export generated pandapower Python or OpenDSS commands from several study dialogs if you want to continue outside Electrisim.
Electrisim would not exist without pandapower, OpenDSS, ANDES, and draw.io, and the people who maintain them.
Download power system models and explore articles on modeling, simulating and analyzing electrical power systems.
You can download models below to be used in the Electrisim open-source software.
OpenDSS harmonic analysis benchmark with TCR and HVDC loads, tuned filters, and reference THD results from IEEE PES GM 2024.
Read More10-bus model of the Italian transmission network with HVDC integration (Terna Hypergrid project). Based on Antonino Patti thesis, Università di Palermo; validated with Neplan, implemented with pandapower.
Rev 4 (16.04.2026): three-winding substation transformers, tap-changer control for transformers and shunt reactors, and Q–P curves for wind turbine generators. 1 GW, 100 km export route.
Read MorePhotovoltaic solar farm model with 100 MW rated power for power system analysis and grid integration studies
Read MoreOnshore wind farm model with 33 MW rated power, with 110 kV km export cable and 30 kV medium voltage cables
Read MoreIt is a simple example to show the basic principles of creating a network for a load flow and short-circuit analysis.
Read MoreCIGRE Medium Voltage network with distributed energy resources (DERs) for power system analysis
Read MoreThe Knowledge Base is used to publish articles on topics related to modeling, simulating and analyzing electrical power systems.
Import the four-bus pandapower opf_basic.ipynb network from a downloadable .py script, then run Simulate → Optimal Power Flow (runopp). Covers import, objectives (poly_cost), and matching the notebook's solver tolerance.
Same offshore model run in pandapower (European open-source) and OpenDSS (U.S. EPRI): ~70 buses, 35 branches, 33 transformers, 450 MW wind. Slack power and corridor flows match within ~0.2%; a cross-continental sanity check for Electrisim results.
Read MoreKey improvements in this release: Replaced two-winding transformers with three-winding transformers at onshore and offshore substations. Tap-changer controllers for transformers and shunt reactors implemented. Q–P characteristic curves added for wind turbine generators. See the model page for the Rev 4 download and full changelog.
Read moreStep-by-step article series by Adam Kierad on designing and simulating a 1 GW offshore wind farm electrical system using Electrisim. Covers NC RfG and Polish Grid Code compliance, load flow, short-circuit, FRT, and power quality studies.
Read Article on LinkedInIndependent research from ZHAW shows that pandapower, PyPSA and OpenDSS can match commercial PowerFactory results with an average error below 2%.
Read MoreWhy do load flow results differ between pandapower and OpenDSS? A summary of external grid modeling differences and how to align results using high short-circuit MVA.
Read MoreA comprehensive master's thesis from University of Palermo demonstrates that Electrisim achieves results comparable to commercial tools like Neplan across IEEE test networks and real-world offshore wind farm models.
Read MoreA practical guide to meeting grid code requirements using Electrisim for a 100MW photovoltaic plant connected via underground cable.
Read MoreThe article shows how to specify reactive power compensation equipment for an onshore wind farm to meet the grid code requirements in Electrisim software
Read MoreLearn how to perform short-circuit calculations in Electrisim using open-source libraries pandapower and OpenDSS. Calculate fault currents according to international standards.
Read MoreThe Electrisim software is tested by numerous tests to verify the proper results with pandapower.
Read MoreLoad flow objective and problem, software, input/output data, calculation algorithms
Read MoreLast updated: August 2026
Copyright @2026 Electrisim. All Rights Reserved by Electrisim