Electrisim Web Application
Electrisim is an open-source web-browser tool to perform electrical analyses.
The Electrisim application is based on the open-source projects: pandapower and OpenDSS. Pandapower is commonly used for power system analysis, while OpenDSS is often mostly used for distribution system modeling. By combining these two software in the Electrisim application we are giving you the possibility to use the advantages of these two continuously developed software.
Current Calculation Capabilities
Following calculation capabilities are currently available:
| Analysis | Algorithm |
|---|---|
| Power flow | pandapower |
| Optimal Power Flow | pandapower |
| Short-circuit according to IEC 60909 | pandapower |
| Controller simulation | pandapower |
| Time-series simulation | pandapower |
| Unbalanced, multi-phase power flow | OpenDSS |
| Short circuit (OpenDSS fault study) | OpenDSS |
About the underlying software:
pandapower v3.3.0 is a joint development of the research group Energy Management and Power System Operation, University of Kassel and the Department for Distribution System Operation at the Fraunhofer Institute for Energy Economics and Energy System Technology (IEE), Kassel.
OpenDSS (via opendssdirect.py) is a development of Electric Power Research Institute (EPRI), USA.
You don't need to install the pandapower or OpenDSS and use a script language to calculate the electrical network. With the Electrisim web application, you can easily perform these calculations by simply dragging and dropping elements.
Note: The Electrisim application is designed to work only in desktop web browsers and is not compatible with mobile phones.
First Steps in Electrisim
To get started with Electrisim, see our Tutorials page for instruction videos and step-by-step guides.
Datastructure and Elements
Following electrical elements are currently available in the Electrisim application:
| 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) |
| Asymmetric Static Generator | ✅ Available | 🟡 no direct element (can be implemented by setting the Generator parameters) |
| External Grid | ✅ Available | ✅ Available (Vsource) |
| Transformer | ✅ Available | ✅ Available |
| Shunt (capacitor or shunt reactor) | ✅ Available | ✅ Available |
| Impedance | ✅ Available | ✅ Available |
| Storage | ✅ Available | ✅ Available |
| Protection relay | ✅ Available | ✅ Available |
| Fuse | ✅ Available | ✅ Available |
| Thyristor-Controlled Series Capacitor (TCSC) | ✅ Available | ✅ Available |
| Switch | ✅ Available | ✅ Available |
| Three Winding Transformer | ✅ Available | 🟡 no direct element (can be implemented as a bank of two-winding transformers) |
| 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 |
| PVSystem | 🟡 no direct element (can be scarsely implemented by static generator) | ✅ Available |
| Unified power flow controller (UPFC) | 🟡 no direct element (can be implemented by modelling SSC + VSC or DC line) | ✅ Available |
Below you'll find detailed information about each element, including key parameters and usage guidelines.
Simulation Type Parameter Requirements
Different simulation types require different sets of parameters. Understanding these requirements helps you configure your network elements correctly for the specific analysis you want to perform.
Key:
- 🔴 Required: Essential parameters that must be specified
- 🟡 Recommended: Important parameters for accurate results
- 🟢 Optional: Parameters that enhance functionality but aren't required
- ⚪ Not Used: Parameters not relevant for this simulation type
Element Details
Detailed parameter information for each electrical element:
Bus
A bus (also called node or busbar) is a fundamental element in the network where multiple components can be connected. Buses serve as connection points and voltage reference points in the electrical network.
Documentation References: 📘 pandapower Bus 📗 OpenDSS Documentation
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the bus | string | - | Bus name | 🔴 PF, SC, OPF |
| 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 |
| in_service | Specifies if the bus is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Line
Lines represent transmission or distribution lines that connect buses in the network. They are characterized by their resistance, reactance, and capacitance per unit length.
Documentation References: 📘 pandapower Line 📗 OpenDSS Line
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the line | string | - | name | 🔴 PF, SC, OPF |
| from_bus | Starting bus | integer | - | Bus1 | 🔴 PF, SC, OPF |
| to_bus | Ending bus | integer | - | Bus2 | 🔴 PF, SC, OPF |
| length_km | Line length in kilometers | float | > 0 | Length | 🔴 PF, SC, OPF |
| r_ohm_per_km | Resistance per kilometer (Ω/km) | float | ≥ 0 | R1 | 🔴 PF, SC, OPF |
| x_ohm_per_km | Reactance per kilometer (Ω/km) | float | ≥ 0 | X1 | 🔴 PF, SC, OPF |
| c_nf_per_km | Capacitance per kilometer (nF/km) | float | ≥ 0 | C1 | 🟡 PF, SC, OPF |
| g_us_per_km | Dielectric conductance per kilometer (μS/km) | float | ≥ 0 | - | 🟡 PF, SC, OPF |
| max_i_ka | Maximum thermal current (kA) | float | > 0 | normamps | 🔴 PF, OPF |
| r0_ohm_per_km | Zero-sequence resistance per kilometer (Ω/km) | float | ≥ 0 | R0 | 🟡 SC |
| x0_ohm_per_km | Zero-sequence reactance per kilometer (Ω/km) | float | ≥ 0 | X0 | 🟡 SC |
| c0_nf_per_km | Zero-sequence capacitance per kilometer (nF/km) | float | ≥ 0 | C0 | 🟡 SC |
| type | Type of line ("ol" for overhead, "cs" for cable) | string | ol, cs | - | 🟡 PF, SC, OPF |
| parallel | Number of parallel lines | integer | ≥ 1 | - | 🟢 PF, SC, OPF |
| df | Derating factor (applies to max_i_ka) | float | 0-1 | - | 🟢 PF, SC, OPF |
| in_service | Specifies if the line is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Load
Loads represent power consumption at a bus. They can be defined as constant power, constant current, or constant impedance loads.
Documentation References: 📘 pandapower Load 📗 OpenDSS Load
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the load | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the load is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| p_mw | Active power consumption in MW | float | - | kW | 🔴 PF, SC, OPF |
| q_mvar | Reactive power consumption in Mvar | float | - | kvar | 🟡 PF, SC, OPF |
| const_z_percent | Percentage of constant impedance load | float | 0-100 | %Z | 🟢 PF, SC, OPF |
| const_i_percent | Percentage of constant current load | float | 0-100 | %I | 🟢 PF, SC, OPF |
| sn_mva | Rated apparent power in MVA | float | > 0 | kVA | 🟡 PF, SC, OPF |
| scaling | Scaling factor for power values | float | > 0 | - | 🟡 PF, SC, OPF |
| type | Type of load model | string | - | model | 🟡 PF, SC, OPF |
| in_service | Specifies if the load is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Motor
Motor elements represent electric motors in the network. Motors have dynamic characteristics that affect short-circuit calculations and stability studies.
Documentation References: 📘 pandapower Motor 📗 OpenDSS Motor
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the motor | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the motor is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| pn_mech_mw | Rated mechanical power in MW | float | > 0 | HP (converted) | 🔴 PF, SC, OPF |
| vn_kv | Rated voltage in kV | float | > 0 | kV | 🔴 PF, SC, OPF |
| cos_phi | Power factor (lagging) | float | 0-1 | pf | 🟡 PF, SC, OPF |
| efficiency_percent | Efficiency in percent at current loading | float | 0-100 | %Eff | 🟡 PF, SC, OPF |
| efficiency_n_percent | Rated efficiency in percent at nominal conditions | float | 0-100 | %EffRated | 🟢 PF, SC, OPF |
| loading_percent | Current loading in percent of rated power | float | 0-100 | %LoadMW | 🟡 PF, SC, OPF |
| scaling | Scaling factor for power | float | > 0 | - | 🟡 PF, SC, OPF |
| lrc_pu | Locked rotor current in per unit for short-circuit calculation | float | > 0 | LRC | 🔴 SC |
| rx | R/X ratio for short-circuit impedance | float | ≥ 0 | R/X | 🔴 SC |
| in_service | Specifies if the motor is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Asymmetric Load
Asymmetric loads allow modeling of unbalanced three-phase loads where each phase can have different power consumption. This is particularly useful for distribution network analysis.
Documentation References: 📘 pandapower Asymmetric Load 📗 OpenDSS Load
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the asymmetric load | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the load is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| p_a_mw, p_b_mw, p_c_mw | Active power per phase in MW (phases A, B, C) | float | - | kW (per phase) | 🔴 PF, SC, OPF |
| q_a_mvar, q_b_mvar, q_c_mvar | Reactive power per phase in Mvar (phases A, B, C) | float | - | kvar (per phase) | 🟡 PF, SC, OPF |
| sn_mva | Rated apparent power in MVA | float | > 0 | kVA | 🟡 PF, SC, OPF |
| scaling | Scaling factor for power values | float | > 0 | - | 🟡 PF, SC, OPF |
| type | Connection type (wye or delta) | string | wye, delta | conn | 🟡 PF, SC, OPF |
| in_service | Specifies if the load is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Static Generator
Static generators represent generators with static behavior, such as wind turbines, photovoltaic systems, or small generation units that don't have significant dynamic characteristics.
Documentation References: 📘 pandapower Static Generator 📗 OpenDSS Generator
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the static generator | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the generator is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| p_mw | Active power generation in MW | float | - | kW | 🔴 PF, SC, OPF |
| q_mvar | Reactive power generation in Mvar | float | - | kvar | 🟡 PF, SC, OPF |
| sn_mva | Rated apparent power in MVA | float | > 0 | kVA | 🟡 PF, SC, OPF |
| type | Type of generator (e.g., PV, wind, CHP) | string | - | - | 🟡 PF, SC, OPF |
| controllable | Whether the generator is controllable | boolean | True/False | - | 🔴 OPF |
| scaling | Scaling factor for power | float | > 0 | - | 🟡 PF, SC, OPF |
| k | Factor for short-circuit calculation (typically 1.1) | float | > 0 | - | 🟡 SC |
| rx | R/X ratio for short-circuit impedance | float | ≥ 0 | R/X | 🔴 SC |
| generator_type | Generator type for short-circuit (current_source, async, doubly_fed) | string | - | - | 🟡 SC |
| lrc_pu | Locked rotor current in per unit for short-circuit | float | > 0 | LRC | 🟡 SC |
| max_ik_ka | Maximum short-circuit current in kA | float | > 0 | - | 🟡 SC |
| current_source | Whether generator acts as current source for short-circuit | boolean | True/False | - | 🟡 SC |
| kappa | Factor for peak short-circuit current (typically 1.5) | float | > 0 | - | 🟡 SC |
| in_service | Specifies if the generator is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Asymmetric Static Generator
Asymmetric static generators allow modeling of unbalanced generation where each phase can produce different power levels.
Documentation References: 📘 pandapower Asymmetric Static Generator 📗 OpenDSS Generator
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the asymmetric generator | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the generator is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| p_a_mw, p_b_mw, p_c_mw | Active power per phase in MW (phases A, B, C) | float | - | kW (per phase) | 🔴 PF, SC, OPF |
| q_a_mvar, q_b_mvar, q_c_mvar | Reactive power per phase in Mvar (phases A, B, C) | float | - | kvar (per phase) | 🟡 PF, SC, OPF |
| type | Connection type (wye or delta) | string | wye, delta | conn | 🟡 PF, SC, OPF |
| in_service | Specifies if the generator is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
External Grid
The external grid represents the connection to a higher voltage level or an infinite bus. It serves as the slack bus in power flow calculations and provides the voltage reference.
Documentation References: 📘 pandapower External Grid 📗 OpenDSS Vsource
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the external grid | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the external grid is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| vm_pu | Voltage magnitude setpoint in per unit | float | > 0 | pu (Vsource) | 🔴 PF, SC, OPF |
| va_degree | Voltage angle in degrees | float | -360 to 360 | angle | 🟡 PF, SC, OPF |
| s_sc_max_mva | Maximum short-circuit apparent power in MVA | float | > 0 | MVAsc3 | 🔴 SC |
| s_sc_min_mva | Minimum short-circuit apparent power in MVA | float | > 0 | MVAsc1 | 🟡 SC |
| rx_max | Maximum R/X ratio for positive sequence short-circuit | float | ≥ 0 | R1/X1 | 🔴 SC |
| rx_min | Minimum R/X ratio for positive sequence short-circuit | float | ≥ 0 | R1/X1 | 🟡 SC |
| r0x0_max | Maximum R0/X0 ratio for zero sequence short-circuit | float | ≥ 0 | R0/X0 | 🟡 SC |
| x0x_max | Maximum X0/X ratio (zero to positive sequence reactance) | float | ≥ 0 | X0/X1 | 🟡 SC |
| in_service | Specifies if the external grid is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Transformer
Transformers connect different voltage levels in the network. They can be equipped with tap changers for voltage regulation.
Documentation References: 📘 pandapower Transformer 📗 OpenDSS Transformer
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the transformer | string | - | name | 🔴 PF, SC, OPF |
| 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") | 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 controllers" in Load Flow) | 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 |
| in_service | Specifies if the transformer is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Three Winding Transformer
Three winding transformers have three separate windings, typically connecting three different voltage levels at one location.
Documentation References: 📘 pandapower Three Winding Transformer 📗 OpenDSS Transformer
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the three winding transformer | string | - | name | 🔴 PF, SC, OPF |
| 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") | 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 |
| in_service | Specifies if the transformer is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Generator
Generators represent synchronous generators with dynamic behavior. They are typically used for large power plants and have voltage control capabilities.
Documentation References: 📘 pandapower Generator 📗 OpenDSS Generator
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the generator | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the generator is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| p_mw | Active power setpoint in MW | float | - | kW | 🔴 OPF |
| vm_pu | Voltage magnitude setpoint in per unit | float | > 0 | kV (model=3) | 🔴 PF, SC, OPF |
| sn_mva | Rated apparent power in MVA | float | > 0 | kVA | 🟡 PF, SC, OPF |
| min_q_mvar | Minimum reactive power in Mvar | float | - | kvarmin | 🔴 OPF |
| max_q_mvar | Maximum reactive power in Mvar | float | - | kvarmax | 🔴 OPF |
| scaling | Scaling factor for power | float | > 0 | - | 🟢 PF, SC, OPF |
| slack | Whether this is the slack generator | boolean | True/False | - | 🟡 PF, SC, OPF |
| vn_kv | Rated voltage in kV | float | > 0 | kV | 🔴 SC |
| xdss_pu | Subtransient reactance in per unit for short-circuit | float | > 0 | Xd'' | 🔴 SC |
| rdss_ohm | Subtransient resistance in Ohm for short-circuit | float | ≥ 0 | - | 🟡 SC |
| cos_phi | Rated power factor (cosine phi) | float | 0-1 | pf | 🟡 SC |
| pg_percent | Generator participation factor in percent for power dispatch | float | 0-100 | - | 🟡 OPF |
| in_service | Specifies if the generator is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Shunt
Shunt elements represent devices connected in parallel to the bus, such as capacitor banks, reactors, or filters used for reactive power compensation.
Documentation References: 📘 pandapower Shunt 📗 OpenDSS Reactor
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the shunt | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the shunt is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| q_mvar | Reactive power in Mvar (positive for capacitive, negative for inductive) | float | - | kvar (Capacitor) | 🔴 PF, SC, OPF |
| p_mw | Active power in MW (usually zero) | float | - | - | 🟡 PF, SC, OPF |
| vn_kv | Rated voltage in kV | float | > 0 | kV | 🟡 PF, SC, OPF |
| step | Step number for switched shunts | integer | ≥ 1 | numsteps | 🟡 PF, SC, OPF |
| in_service | Specifies if the shunt is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Impedance
Impedance elements represent arbitrary impedances connecting two buses. They are useful for modeling special connections or simplified network equivalents.
Documentation References: 📘 pandapower Impedance 📗 OpenDSS Documentation
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the impedance | string | - | name | 🔴 PF, SC, OPF |
| from_bus | Starting bus | integer | - | Bus1 | 🔴 PF, SC, OPF |
| to_bus | Ending bus | integer | - | Bus2 | 🔴 PF, SC, OPF |
| rft_pu | Resistance in per unit | float | ≥ 0 | R (converted to ohms) | 🔴 PF, SC, OPF |
| xft_pu | Reactance in per unit | float | - | X (converted to ohms) | 🔴 PF, SC, OPF |
| sn_mva | Rated apparent power for per unit calculation in MVA | float | > 0 | - | 🟡 PF, SC, OPF |
| in_service | Specifies if the impedance is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Ward
Ward equivalents represent a reduced network with a constant impedance and constant power component. They are used for network reduction.
Documentation References: 📘 pandapower Ward 📗 OpenDSS Documentation
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the ward equivalent | string | - | - | 🔴 PF, SC, OPF |
| bus | Bus the ward is connected to | integer | - | - | 🔴 PF, SC, OPF |
| ps_mw | Active power of the constant power component in MW | float | - | PQ Load (kW) | 🔴 PF, SC, OPF |
| qs_mvar | Reactive power of the constant power component in Mvar | float | - | PQ Load (kvar) | 🔴 PF, SC, OPF |
| pz_mw | Active power of the constant impedance component in MW | float | - | Shunt (equiv.) | 🔴 PF, SC, OPF |
| qz_mvar | Reactive power of the constant impedance component in Mvar | float | - | Shunt (equiv.) | 🔴 PF, SC, OPF |
| in_service | Specifies if the ward is in service | boolean | True/False | - | 🟡 PF, SC, OPF |
Extended Ward
Extended Ward equivalents are an extension of Ward equivalents with an additional internal bus and impedance, allowing for more accurate representation of reduced networks.
Documentation References: 📘 pandapower Extended Ward 📗 OpenDSS Documentation
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the extended ward | string | - | - | 🔴 PF, SC, OPF |
| bus | External bus | integer | - | - | 🔴 PF, SC, OPF |
| ps_mw | Active power of constant power component in MW | float | - | PQ Load (kW) | 🔴 PF, SC, OPF |
| qs_mvar | Reactive power of constant power component in Mvar | float | - | PQ Load (kvar) | 🔴 PF, SC, OPF |
| pz_mw | Active power of impedance component in MW | float | - | Shunt (equiv.) | 🔴 PF, SC, OPF |
| qz_mvar | Reactive power of impedance component in Mvar | float | - | Shunt (equiv.) | 🔴 PF, SC, OPF |
| r_ohm | Internal resistance in Ohm | float | ≥ 0 | - | 🔴 PF, SC, OPF |
| x_ohm | Internal reactance in Ohm | float | - | - | 🔴 PF, SC, OPF |
| vm_pu | Internal bus voltage magnitude in per unit | float | > 0 | PV Gen (equiv.) | 🔴 PF, SC, OPF |
| in_service | Specifies if the extended ward is in service | boolean | True/False | - | 🟡 PF, SC, OPF |
DC Line
DC lines represent high-voltage direct current (HVDC) connections between AC systems. They provide controlled power transfer and can connect asynchronous networks.
Documentation References: 📘 pandapower DC Line OpenDSS: Not Available
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the DC line | string | - | - | 🔴 PF, OPF |
| from_bus | Starting bus (rectifier side) | integer | - | - | 🔴 PF, OPF |
| to_bus | Ending bus (inverter side) | integer | - | - | 🔴 PF, OPF |
| p_mw | Active power transmitted from from_bus to to_bus in MW | float | - | - | 🔴 PF, OPF |
| loss_percent | Relative transmission loss in percent | float | ≥ 0 | - | 🟡 PF, OPF |
| loss_mw | Fixed transmission loss in MW | float | ≥ 0 | - | 🟡 PF, OPF |
| vm_from_pu | Voltage setpoint at the from bus in per unit | float | > 0 | - | 🔴 PF, OPF |
| vm_to_pu | Voltage setpoint at the to bus in per unit | float | > 0 | - | 🔴 PF, OPF |
| in_service | Specifies if the DC line is in service | boolean | True/False | - | 🟡 PF, OPF |
Storage
Storage elements represent battery energy storage systems (BESS) or other energy storage technologies that can both consume and generate power.
Documentation References: 📘 pandapower Storage 📗 OpenDSS Storage
Parameters:
| 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 = discharging, negative = charging) | float | - | kW (Storage) | 🔴 PF, OPF |
| q_mvar | Reactive power in Mvar | float | - | kvar (Storage) | 🟡 PF, OPF |
| sn_mva | Rated apparent power in MVA | float | > 0 | kVA (Storage) | 🟡 PF, OPF |
| max_e_mwh | Maximum energy capacity in MWh | float | > 0 | kWhrated | 🔴 OPF |
| soc_percent | State of charge in percent | float | 0-100 | %stored | 🟡 OPF |
| min_e_mwh | Minimum energy capacity in MWh | float | ≥ 0 | %reserve | 🔴 OPF |
| scaling | Scaling factor for power values | float | > 0 | - | 🟡 PF, OPF |
| type | Type of storage (e.g., battery, flywheel) | string | - | - | 🟡 PF, OPF |
| in_service | Specifies if the storage is in service | boolean | True/False | enabled | 🟡 PF, OPF |
Static Var Compensator (SVC)
Static Var Compensators are FACTS devices used for dynamic voltage support and reactive power control. They can rapidly adjust reactive power output.
Documentation References: 📘 pandapower SVC 📗 OpenDSS Documentation
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the SVC | string | - | - | 🔴 PF, OPF |
| bus | Bus the SVC is connected to | integer | - | - | 🔴 PF, OPF |
| x_l_ohm | Inductive reactance in Ohm | float | > 0 | XL (Reactor) | 🔴 PF, OPF |
| x_cvar_ohm | Variable capacitive reactance in Ohm | float | > 0 | kvar (Capacitor) | 🔴 PF, OPF |
| set_vm_pu | Voltage setpoint in per unit | float | > 0 | kvarlimit (CapControl) | 🔴 PF, OPF |
| thyristor_firing_angle_degree | Thyristor firing angle in degrees | float | 0-180 | - | 🟡 PF, OPF |
| min_angle_degree | Minimum thyristor firing angle in degrees | float | 0-180 | - | 🟡 PF, OPF |
| max_angle_degree | Maximum thyristor firing angle in degrees | float | 0-180 | - | 🟡 PF, OPF |
| controllable | Whether the SVC is controllable | boolean | True/False | - | 🔴 OPF |
| in_service | Specifies if the SVC is in service | boolean | True/False | - | 🟡 PF, OPF |
Thyristor-Controlled Series Capacitor (TCSC)
TCSCs are FACTS devices that provide controllable series compensation to regulate power flow and improve transmission capacity.
Documentation References: 📘 pandapower TCSC 📗 OpenDSS Documentation
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the TCSC | string | - | name | 🔴 PF, OPF |
| from_bus | Starting bus | integer | - | Bus1 | 🔴 PF, OPF |
| to_bus | Ending bus | integer | - | Bus2 | 🔴 PF, OPF |
| x_l_ohm | Inductive reactance in Ohm | float | > 0 | XL (Reactor) | 🔴 PF, OPF |
| x_cvar_ohm | Variable capacitive reactance in Ohm | float | > 0 | C (Capacitor) | 🔴 PF, OPF |
| set_p_to_mw | Power flow setpoint at receiving end in MW | float | - | - | 🔴 OPF |
| thyristor_firing_angle_degree | Thyristor firing angle in degrees | float | 0-180 | - | 🟡 PF, OPF |
| min_angle_degree | Minimum firing angle in degrees | float | 0-180 | - | 🟡 PF, OPF |
| max_angle_degree | Maximum firing angle in degrees | float | 0-180 | - | 🟡 PF, OPF |
| controllable | Whether the TCSC is controllable | boolean | True/False | - | 🔴 OPF |
| in_service | Specifies if the TCSC is in service | boolean | True/False | enabled | 🟡 PF, OPF |
Static Synchronous Compensator (SSC / STATCOM)
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.
Documentation References: 📘 pandapower SSC 📗 OpenDSS Documentation
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the SSC | string | - | name | 🔴 PF, OPF |
| bus | Bus the SSC is connected to | integer | - | Bus1 | 🔴 PF, OPF |
| r_ohm | Internal resistance in Ohm | float | ≥ 0 | R (Generator) | 🔴 PF, OPF |
| x_ohm | Internal reactance in Ohm | float | > 0 | X (Generator) | 🔴 PF, OPF |
| set_vm_pu | Voltage setpoint at connection bus in per unit | float | > 0 | Voltage (InvControl) | 🔴 PF, OPF |
| vm_internal_pu | Internal voltage magnitude in per unit | float | > 0 | kV (Generator) | 🟡 PF, OPF |
| va_internal_degree | Internal voltage angle in degrees | float | -360 to 360 | Angle (Generator) | 🟡 PF, OPF |
| controllable | Whether the SSC is controllable | boolean | True/False | Enabled (InvControl) | 🔴 OPF |
| in_service | Specifies if the SSC is in service | boolean | True/False | enabled | 🟡 PF, OPF |
DC Bus
DC buses represent connection points in DC networks, similar to AC buses but for direct current systems. They serve as nodes where DC components like DC loads, DC sources, and DC lines can be connected.
Documentation References: 📘 pandapower DC Bus OpenDSS: Not Available
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the DC bus | string | - | - | 🔴 PF, SC, OPF |
| vn_kv | Rated voltage in kV | float | > 0 | - | 🔴 PF, SC, OPF |
| in_service | Specifies if the DC bus is in service | boolean | True/False | - | 🟡 PF, SC, OPF |
Load DC
DC loads represent power consumption in DC networks. They consume active power from the DC system.
Documentation References: 📘 pandapower Load DC OpenDSS: Not Available
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the DC load | string | - | - | 🔴 PF, SC, OPF |
| bus | DC bus the load is connected to | integer | - | - | 🔴 PF, SC, OPF |
| p_mw | Active power consumption in MW | float | ≥ 0 | - | 🔴 PF, SC, OPF |
| in_service | Specifies if the DC load is in service | boolean | True/False | - | 🟡 PF, SC, OPF |
Source DC
DC sources represent voltage sources in DC networks, similar to external grids in AC systems. They provide voltage reference and power injection into the DC network.
Documentation References: 📘 pandapower Source DC OpenDSS: Not Available
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the DC source | string | - | - | 🔴 PF, SC, OPF |
| bus | DC bus the source is connected to | integer | - | - | 🔴 PF, SC, OPF |
| vm_pu | Voltage magnitude setpoint in per unit | float | > 0 | - | 🔴 PF, SC, OPF |
| in_service | Specifies if the DC source is in service | boolean | True/False | - | 🟡 PF, SC, OPF |
Switch
Switches represent circuit breakers, load break switches, or disconnectors that can connect or disconnect lines or transformers. They are essential for network topology control and protection.
Documentation References: 📘 pandapower Switch 📗 OpenDSS Switch
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the switch | string | - | name | 🔴 PF, SC, OPF |
| bus | Bus the switch is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| element | Index of the element (line or transformer) the switch is connected to | integer | - | Bus2 | 🔴 PF, SC, OPF |
| closed | Specifies if the switch is closed (True/False) | boolean | True/False | closed | 🔴 PF, SC, OPF |
| type | Type of switch: "CB" (Circuit Breaker), "LBS" (Load Break Switch), "DS" (Disconnector) | string | CB, LBS, DS | type | 🟡 PF, SC, OPF |
| z_ohm | Impedance of the switch in Ohm (when closed) | float | ≥ 0 | R (converted) | 🟡 PF, SC, OPF |
| in_ka | Rated current of the switch in kA | float | > 0 | normamps | 🟡 PF, SC, OPF |
| ikss_ka | Short-circuit current in kA | float | ≥ 0 | - | 🔴 SC |
| in_service | Specifies if the switch is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Voltage Source Converter (VSC)
Voltage Source Converters are power electronic devices that connect AC and DC networks. They enable bidirectional power flow and provide voltage control capabilities, making them essential for HVDC systems and renewable energy integration.
Documentation References: 📘 pandapower VSC OpenDSS: Not Available
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the VSC | string | - | - | 🔴 PF, SC, OPF |
| bus | AC bus the VSC is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| bus_dc | DC bus the VSC is connected to | integer | - | - | 🔴 PF, SC, OPF |
| p_mw | Active power setpoint at the AC bus in MW | float | - | kW | 🔴 PF, SC, OPF |
| vm_pu | Voltage magnitude setpoint on the AC side in per unit | float | > 0 | kV | 🔴 PF, SC, OPF |
| sn_mva | Nominal power of the VSC in MVA | float | > 0 | kVA | 🟡 PF, SC, OPF |
| rx | R/X ratio of the VSC coupling transformer | float | ≥ 0 | R/X | 🟡 PF, SC, OPF |
| max_ik_ka | Maximum short-circuit current in kA | float | > 0 | - | 🟡 SC |
| in_service | Specifies if the VSC is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Back-to-Back Voltage Source Converter (B2B VSC)
Back-to-Back Voltage Source Converters connect two AC networks through a common DC link. They enable asynchronous interconnection and provide independent control of active and reactive power flow between the two AC systems.
Documentation References: 📘 pandapower B2B VSC OpenDSS: Not Available
Parameters:
| Parameter | Description | Type | Value Range | OpenDSS Equivalent | Simulation Types |
|---|---|---|---|---|---|
| name | Name of the B2B VSC | string | - | - | 🔴 PF, SC, OPF |
| bus1 | First AC bus the B2B VSC is connected to | integer | - | Bus1 | 🔴 PF, SC, OPF |
| bus2 | Second AC bus the B2B VSC is connected to | integer | - | Bus2 | 🔴 PF, SC, OPF |
| p_mw | Active power setpoint at bus1 in MW | float | - | kW | 🔴 PF, SC, OPF |
| vm1_pu | Voltage magnitude setpoint on the first AC side in per unit | float | > 0 | kV (Bus1) | 🔴 PF, SC, OPF |
| vm2_pu | Voltage magnitude setpoint on the second AC side in per unit | float | > 0 | kV (Bus2) | 🔴 PF, SC, OPF |
| sn_mva | Nominal power of the B2B VSC in MVA | float | > 0 | kVA | 🟡 PF, SC, OPF |
| rx | R/X ratio of the B2B 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 B2B VSC is in service | boolean | True/False | enabled | 🟡 PF, SC, OPF |
Simulation
This section describes the simulation capabilities available in Electrisim for analyzing electrical networks and sizing system components. All simulations are powered by the pandapower library, which provides comprehensive power system analysis tools.
Load Flow (Power Flow)
The Load Flow (Power Flow) calculation is the most fundamental analysis operation in power system engineering. It determines the steady-state operating conditions of an electrical network, including voltages, currents, and power flows throughout the system.
Use Case: Load Flow analysis is essential for:
- Verifying that network voltages are within acceptable limits
- Checking power flows and loading of transmission lines and transformers
- Evaluating system losses and power quality
- Validating network design and operation before conducting other analyses
- Assessing the impact of load changes or generator dispatch
How It Works
Electrisim supports load flow calculations using two simulation engines:
- Pandapower Engine: Full-featured power flow solver with multiple algorithms including Newton-Raphson, Iwamoto, Backward Forward Sweep, Gauss-Seidel, FDBX, and FDXB.
- OpenDSS Engine: Alternative power flow solver with support for snapshot, daily, and dutycycle simulation modes.
The calculation iteratively solves the power balance equations at each bus until convergence is achieved. The Newton-Raphson method is the default algorithm, providing fast and reliable convergence for most networks.
Input Parameters (Pandapower)
| Parameter | Description | Type | Options/Value Range | Default |
|---|---|---|---|---|
| Frequency | System frequency | radio | 50 Hz, 60 Hz | 50 Hz |
| Algorithm | Power flow solution algorithm | radio | Newton-Raphson (nr), Iwamoto (iwamoto_nr), Backward Forward Sweep (bfsw), Gauss-Seidel (gs), FDBX (fdbx), FDXB (fdxb) | Newton-Raphson |
| Calculate Voltage Angles | Whether to calculate voltage angles (required for accurate active power flow) | radio | Auto, True, False | Auto |
| Initialization | Initial voltage guess strategy | radio | Auto, Flat (1.0 pu), DC | Auto |
| Max Iterations | Maximum number of iterations before stopping | number | 1-1000 | 100 |
| Tolerance | Convergence tolerance (power mismatch) | number | > 0 | 1e-6 |
| Enforce Q Limits | Whether to enforce reactive power limits on generators | 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 Controllers | Run pandapower controllers during load flow (e.g., transformer Discrete Tap Control) | checkbox | Yes/No | No |
Input Parameters (OpenDSS)
| Parameter | Description | Type | Options | Default |
|---|---|---|---|---|
| Base Frequency | System frequency | radio | 50 Hz, 60 Hz | 50 Hz |
| Solution Mode | Type of simulation | radio | Snapshot (single solution), Daily (24-hour), Dutycycle (time-varying) | Snapshot |
| Load Model | Load representation | radio | Constant Power, Constant Current, Constant Impedance, Mixed | Constant Power |
| Control Mode | Control device behavior | radio | Static, Time, Event, MultiRate | Static |
Output Results
The load flow results include comprehensive information about network state:
Controller Results: When "Include Controllers" is enabled, a Tap Changer Control Results dialog displays controlled transformer tap positions, voltage targets, and any limit warnings.
| Output Category | Parameters | Units |
|---|---|---|
| Buses | Voltage magnitude (pu), Voltage angle (degrees) | pu, degrees |
| External Grids | Active power (P), Reactive power (Q), Power factor (PF), Q/P ratio | MW, Mvar, -, - |
| Lines | P_from, Q_from, I_from, P_to, Q_to, I_to, Loading percentage | MW, Mvar, kA, MW, Mvar, kA, % |
| Transformers | P_HV, Q_HV, P_LV, Q_LV, I_HV, I_LV, Loading percentage, Losses | MW, Mvar, MW, Mvar, kA, kA, %, MW |
| 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, % |
Algorithm Details
Newton-Raphson Method (Default): This is the most widely used power flow algorithm, providing fast convergence for well-conditioned networks. It linearizes the power balance equations using the Jacobian matrix and iteratively solves for voltage corrections.
Other Algorithms:
- Iwamoto: Enhanced Newton-Raphson with improved convergence for ill-conditioned systems
- Backward Forward Sweep: Suitable for radial distribution networks
- Gauss-Seidel: Simpler iterative method, slower convergence but more robust for some cases
- FDBX/FDXB: Fast decoupled variants for transmission networks
Limitations and Considerations
Important Notes:
- Load flow assumes balanced three-phase conditions (single-phase equivalent)
- The network must have at least one external grid (slack bus) to provide power balance
- Convergence may fail if the network is too heavily loaded or has numerical issues
- Some algorithms may not be suitable for all network topologies (e.g., BFSW for radial networks only)
- Results are steady-state and do not consider dynamic or transient behavior
Technical References
Based on: pandapower Power Flow Documentation and OpenDSS.
Algorithm Type: Iterative solution of power balance equations using various numerical methods.
Documentation References: 📘 pandapower Power Flow 📘 pandapower runpp()
Contingency Analysis
Contingency Analysis evaluates the robustness of a power system by simulating the impact of equipment outages (N-1, N-2, or N-K contingencies). This analysis identifies potential system vulnerabilities and ensures that the network remains stable and within operating limits even when critical elements are removed.
Use Case: Contingency Analysis is critical for:
- Ensuring N-1 security (system remains stable after single element outage)
- Identifying overloaded lines or transformers after contingencies
- Detecting voltage violations following equipment outages
- Planning system reinforcements and upgrades
- Compliance with grid codes and reliability standards
How It Works
The contingency analysis performs the following steps:
- Base Case (N-0): First runs a load flow for the intact network to establish baseline conditions
- Contingency Definition: Identifies elements to analyze (lines, transformers, generators) based on user selection
- N-1/N-2/N-K Analysis: For each contingency, the selected element(s) are switched off and a new load flow is performed
- Limit Checking: Checks for voltage violations and thermal overloads in each contingency case
- Results Aggregation: Summarizes minimum and maximum values across all contingencies
Input Parameters
| Parameter | Description | Type | Options/Value Range | Default |
|---|---|---|---|---|
| Contingency Type | Number of simultaneous outages to analyze | radio | N-1 (single), N-2 (double), N-K (multiple) | N-1 |
| Element Type to Analyze | Type of elements to consider as contingencies | radio | Transmission Lines, Transformers, Generators, All Elements | Transmission Lines |
| Elements to Analyze | Which elements to include in analysis | radio | All Elements, Critical Elements Only, Selected Elements Only | All Elements |
| Check Voltage Limits | Whether to check for voltage violations | radio | Yes, No | Yes |
| Check Thermal Limits | Whether to check for thermal overloads | radio | Yes, No | Yes |
| Minimum Voltage (p.u.) | Lower voltage limit for violation detection | number | 0.5 - 1.0 | 0.95 |
| Maximum Voltage (p.u.) | Upper voltage limit for violation detection | number | 1.0 - 1.5 | 1.05 |
| Maximum Loading (%) | Thermal loading limit for lines and transformers | number | 50 - 200 | 100 |
| Post-Contingency Actions | Whether to apply corrective actions after contingencies | radio | No Actions, Generation Redispatch, Load Shedding, Both | No Actions |
Output Results
The contingency analysis provides comprehensive results for each contingency case and aggregated statistics:
| Output Category | Parameters | Description |
|---|---|---|
| Bus Voltages | min_vm_pu, max_vm_pu | Minimum and maximum voltage magnitude across all contingencies |
| Line Loading | max_loading_percent, min_loading_percent, causes_overloading, cause_element, cause_index | Maximum and minimum loading, whether this line causes overloads, and which contingency causes maximum loading |
| Transformer Loading | max_loading_percent, min_loading_percent, causes_overloading, cause_element, cause_index | Maximum and minimum loading, whether this transformer causes overloads, and which contingency causes maximum loading |
| Violations Summary | Voltage violations, Thermal overloads | Count and details of all limit violations across all contingencies |
| Critical Contingencies | Contingency list | List of contingencies that cause violations or system instability |
Algorithm Details
The contingency analysis uses the pandapower run_contingency() function, which:
- Performs sequential power flow calculations for each defined contingency
- Aggregates results to find minimum and maximum values for each monitored variable
- Identifies which contingency causes each maximum/minimum condition
- Checks compliance with user-defined voltage and thermal limits
- Provides detailed diagnostics for limit violations
Limitations and Considerations
Important Notes:
- Analysis assumes no protection system operation - elements are simply removed without fault clearing
- Each contingency is analyzed independently (sequential, not simultaneous)
- System may become islanded in some contingencies, requiring special handling
- Large networks with many contingencies can take significant computation time
- Results assume steady-state conditions - dynamic stability is not evaluated
- Post-contingency corrective actions (if enabled) are simplified and may not reflect actual operator response
Technical References
Based on: pandapower Contingency Analysis Documentation.
Algorithm Type: Sequential power flow calculations with limit checking and result aggregation.
Documentation References: 📘 pandapower Contingency Analysis 📘 run_contingency()
Optimal Power Flow (OPF)
Optimal Power Flow (OPF) determines the optimal dispatch of generation resources to minimize operating costs while satisfying all network constraints, including voltage limits, thermal limits, and generator capabilities. Unlike standard load flow, OPF optimizes an objective function subject to equality and inequality constraints.
Use Case: Optimal Power Flow is essential for:
- Minimizing generation costs while meeting demand
- Determining optimal generator dispatch and scheduling
- Evaluating system economics and operating strategies
- Planning transmission expansions and upgrades
- Market operations and economic dispatch
How It Works
Electrisim supports two types of OPF calculations:
- AC Optimal Power Flow (AC OPF): Full nonlinear optimization considering active and reactive power, voltage magnitudes and angles. More accurate but computationally intensive.
- DC Optimal Power Flow (DC OPF): Linearized approximation that considers only active power and voltage angles. Faster but less accurate, suitable for transmission planning.
The optimization problem is solved using mathematical programming techniques (typically Interior Point Method or Sequential Quadratic Programming) to find the optimal generator dispatch that minimizes costs while respecting all operational constraints.
Input Parameters
| Parameter | Description | Type | Options/Value Range | Default |
|---|---|---|---|---|
| OPF Type | Type of optimal power flow calculation | radio | AC Optimal Power Flow (runopp), DC Optimal Power Flow (rundcopp) | AC OPF |
| Frequency | System frequency | radio | 50 Hz, 60 Hz | 50 Hz |
| AC Algorithm | Solver for AC OPF | radio | PYPOWER | PYPOWER |
| DC Algorithm | Solver for DC OPF | radio | PYPOWER | PYPOWER |
| Calculate Voltage Angles | Whether to calculate voltage angles | radio | Auto, True, False | Auto |
| Initialization | Initial guess strategy | radio | Power Flow, Flat, Previous Results | Power Flow |
| Delta (Convergence Tolerance) | Optimization convergence tolerance | number | > 0 | 1e-8 |
| Transformer Model | Transformer representation in optimization | radio | Exact Model (t), Pi Model (pi) | Exact Model |
Objective Function
The default objective function minimizes total generation cost, which is typically defined as:
Minimize: Σ (Costi × Pgen,i) for all generators i
Where Costi is the cost coefficient for generator i and Pgen,i is the active power output. Cost functions can be linear, quadratic, or piecewise linear.
Constraints
The OPF solution must satisfy:
- Power Balance: Total generation equals total load plus losses
- Generator Limits: Pmin ≤ Pgen ≤ Pmax, Qmin ≤ Qgen ≤ Qmax
- Voltage Limits: Vmin ≤ V ≤ Vmax at all buses
- Thermal Limits: Loading ≤ 100% for lines and transformers
- Reactive Power Limits: Generator reactive power capability constraints
Output Results
The OPF results include optimized dispatch and system state:
| Output Category | Parameters | Description |
|---|---|---|
| Optimization Status | Status, Success flag | Whether optimization converged successfully |
| Total Cost | Objective function value | Minimum total generation cost achieved (monetary units) |
| Generator Dispatch | P_opt, Q_opt | Optimal active and reactive power output for each generator |
| Bus Voltages | vm_pu, va_degree | Optimal voltage magnitudes and angles at all buses |
| Power Flows | P_from, Q_from, P_to, Q_to, Loading | Optimal power flows and loading of lines and transformers |
| Marginal Costs | Lambda_P, Lambda_Q | Shadow prices (marginal costs) for active and reactive power at each bus |
| Constraint Violations | Violation details | Information about any constraint violations if optimization failed |
Algorithm Details
AC OPF: Solves the full nonlinear optimization problem using Interior Point Method (IPM) or Sequential Quadratic Programming (SQP). Provides accurate results but requires significant computation time for large networks.
DC OPF: Uses a linearized power flow model (ignoring losses and reactive power). Much faster than AC OPF but less accurate. Suitable for transmission planning where reactive power is less critical.
Solver: PYPOWER, which is based on MATPOWER and uses MATLAB optimization solvers (converted to Python).
Limitations and Considerations
Important Notes:
- OPF assumes perfect information and deterministic conditions - does not account for uncertainty
- Cost functions must be defined for generators (linear or quadratic coefficients)
- AC OPF may fail to converge for heavily loaded or ill-conditioned systems
- DC OPF ignores reactive power, losses, and voltage constraints
- Results represent steady-state optimal dispatch - dynamic constraints are not considered
- Large networks may require significant computation time, especially for AC OPF
- Market rules and regulatory constraints may not be fully represented
Technical References
Based on: pandapower Optimal Power Flow Documentation and PYPOWER.
Algorithm Type: Nonlinear/Linear optimization with Interior Point Method or Sequential Quadratic Programming.
Documentation References: 📘 pandapower Optimal Power Flow 📘 PYPOWER OPF
Short Circuit
Short Circuit analysis calculates fault currents that occur when an electrical fault (short circuit) is applied to the network. This analysis is essential for sizing protective devices, determining interrupting ratings, and ensuring equipment can withstand fault conditions. The calculations follow international standards (DIN/IEC EN 60909).
Use Case: Short Circuit analysis is critical for:
- Sizing circuit breakers and fuses with adequate interrupting capacity
- Determining relay settings and protection coordination
- Ensuring equipment can withstand thermal and mechanical stresses during faults
- Compliance with grid codes and safety standards (DIN/IEC EN 60909)
- Designing grounding systems and fault current limiting devices
How It Works
The short circuit calculation uses the superposition principle and symmetrical components to determine fault currents:
- Network Modeling: The network is represented using positive, negative, and zero sequence impedances
- Fault Application: A fault impedance is applied at the specified fault location
- Equivalent Circuit: The Thévenin equivalent circuit is calculated from the fault location
- Fault Current Calculation: Fault currents are calculated based on fault type (3-phase, 2-phase, 1-phase)
- Current Distribution: Currents are distributed throughout the network to determine branch contributions
Fault Types
Electrisim supports three types of short circuit faults:
- Three-Phase Fault (3ph): Symmetrical fault affecting all three phases. Typically produces the highest fault current. Used for symmetrical interrupting capacity rating.
- Two-Phase Fault (2ph): Fault between two phases. Produces lower fault current than three-phase. Used for phase-to-phase protection.
- Single-Phase Fault (1ph): Fault between one phase and neutral/ground. Includes zero sequence impedance. Critical for ground fault protection and neutral sizing.
Input Parameters
| Parameter | Description | Type | Options/Value Range | Default |
|---|---|---|---|---|
| Fault | Type of short circuit fault | radio | Three Phase (3ph), Two Phase (2ph), Single Phase (1ph) | Three Phase |
| Case | Fault current calculation case | radio | Maximum (max), Minimum (min) | Maximum |
| Voltage Tolerance in LV Grids | Voltage tolerance factor for low voltage networks | radio | 6%, 10% | 6% |
| Topology | Network topology classification | radio | Auto, Radial, Meshed | Auto |
| Failure Clearing Time (s) | Fault duration for thermal rating (ith calculation) | number | > 0 | 1.0 |
| Fault Resistance (Ohm) | Resistance at fault location (for arc fault modeling) | number | ≥ 0 | 0 |
| Fault Reactance (Ohm) | Reactance at fault location | number | ≥ 0 | 0 |
| Inverse Should Be Used Instead of LU Factorization | Solution method preference | radio | True, False | True |
Calculation Cases
According to DIN/IEC EN 60909, different calculation cases are used:
- Maximum Case (Ik"): Highest fault current (typically for breaker sizing). Assumes maximum generation, minimum impedances, voltage = 1.1 pu (cmax).
- Minimum Case (Ik'): Lowest fault current (typically for protection coordination). Assumes minimum generation, maximum impedances, voltage = 0.9 pu (cmin).
Output Results
The short circuit analysis provides detailed fault current information:
| Output Category | Parameters | Description | Units |
|---|---|---|---|
| Fault Location | Bus name, Fault type | Location and type of applied fault | - |
| Initial Symmetrical Current | Ik" (initial symmetrical short-circuit current) | Fault current at t=0 (symmetrical component) | kA |
| Peak Current | ip (peak short-circuit current) | Maximum instantaneous fault current including DC offset | kA |
| Breaking Current | Ib (breaking current) | Fault current at breaker opening time (symmetrical) | kA |
| Steady-State Current | Ik (steady-state short-circuit current) | Fault current after transients decay | kA |
| Thermal Current | Ith (thermal equivalent current) | Equivalent RMS current for thermal rating based on fault duration | kA |
| Branch Contributions | I_from, I_to for each branch | Fault current contribution from each line/transformer | kA |
| Generator Contributions | I_gen for each generator | Fault current contribution from each generator | kA |
| Voltage Profile | V_fault at all buses | Voltage magnitude at all buses during fault | kV or pu |
Algorithm Details
The short circuit calculation follows DIN/IEC EN 60909 standard:
- Voltage Factor (c): cmax = 1.1 for maximum case, cmin = 0.9 for minimum case (low voltage)
- Impedance Correction: Generator and transformer impedances are corrected according to the standard
- Far-from-Generator Approximation: Used when fault is far from generators (symmetrical current decays quickly)
- Near-to-Generator: Special handling when fault is close to generators (asynchronous contribution)
- Solution Method: Matrix inversion or LU factorization of network admittance matrix
Limitations and Considerations
Important Notes:
- Calculations assume balanced pre-fault conditions and symmetrical source impedances
- Fault resistance/reactance can be specified but arc fault modeling may require additional considerations
- Results are based on steady-state fault analysis - dynamic transients are approximated
- Motor contributions to fault current may require special modeling
- Grounding system impedance significantly affects single-phase fault currents
- Results are valid for the specified fault location - multiple fault locations require separate calculations
- Protection device characteristics (opening time, arcing) are not modeled in the base calculation
Short Circuit based on OpenDSS
In addition to the Pandapower (IEC 60909) short circuit analysis, Electrisim offers short circuit calculation based on OpenDSS. In the Short Circuit dialog, select the OpenDSS tab to run a conventional fault study using the Open-Source Distribution System Simulator.
OpenDSS fault study (Solve Mode=FaultStudy) computes for every bus:
- Initial symmetrical short-circuit current (I''k, ikss) in kA
- Peak short-circuit current (ip, ip) in kA
- Thermal short-circuit current (Ith, ith) in kA
- Positive-sequence short-circuit resistance (Rk, rk_ohm) and reactance (Xk, xk_ohm) in ohms
Fault type (e.g. 3-phase) and frequency can be set in the OpenDSS tab. Results are shown on the diagram at each busbar. This option uses the same network model as OpenDSS load flow (buses, lines, loads, generators, external grid).
OpenDSS references: Fault Studies, Fault Study Mode, Bus.Isc().
Technical References
Based on: pandapower Short Circuit Documentation and DIN/IEC EN 60909 standard (Pandapower); OpenDSS fault study (OpenDSS).
Algorithm Type: Pandapower: symmetrical components method with impedance-based fault calculation following international standards. OpenDSS: conventional fault study with Thévenin equivalent and open-circuit voltage per bus.
Documentation References: 📘 pandapower Short Circuit 📘 Short Circuit Calculation 📗 OpenDSS Fault Studies
Standards: IEC 60909: Short-circuit currents in three-phase a.c. systems (Pandapower).
Battery Sizing for Busbar Requirements
The Battery Sizing for Busbar Requirements functionality allows you to calculate the required Battery Energy Storage System (BESS) power output to achieve specific active power (P) and reactive power (Q) targets at a Point of Coupling (POC) busbar.
Use Case: This tool is particularly useful for:
- Determining BESS capacity needed to meet grid connection requirements
- Evaluating multiple operational scenarios (load supply, power export, reactive support, etc.)
- Optimizing BESS sizing for different target P/Q conditions at the POC
How It Works
The sizing algorithm uses an iterative control loop approach based on pandapower's control framework:
- Initial Guess: The algorithm starts with an initial estimate of BESS power based on the target P and Q values, accounting for expected losses (typically 5% overhead).
- Iterative Control Loop: A proportional controller adjusts BESS active and reactive power iteratively until the target P/Q at the POC is achieved within the specified tolerance.
- Power Flow Analysis: Each iteration runs a Newton-Raphson power flow to evaluate the current network state and calculate the error between target and achieved P/Q values.
- Convergence Check: The algorithm converges when both P and Q errors are below the specified tolerance, or reaches the maximum number of iterations.
Input Parameters
| Parameter | Description | Type | Value Range | Default |
|---|---|---|---|---|
| Storage Selection | Select the Battery/Storage element in the network to be sized | dropdown | Available storage elements | - |
| POC Busbar | Point of Coupling busbar where target P/Q should be achieved (typically connected to external grid) | dropdown | Available busbars | - |
| Calculation Mode | Select between "Single Target at POC" or "Multiple Scenarios" | radio | single, multiple | single |
| Target P (MW) | Target active power at POC in MW Positive = consumption from grid, Negative = generation to grid |
number | Any real number | 10.0 |
| Target Q (Mvar) | Target reactive power at POC in Mvar Positive = inductive (lagging), Negative = capacitive (leading) |
number | Any real number | 5.0 |
| Convergence Tolerance | Convergence criterion in MW/Mvar - algorithm stops when both P and Q errors are below this value | number | > 0 | 0.001 |
| Max Iterations | Maximum number of control loop iterations before stopping | integer | 1-200 | 50 |
| Proportional Gain (P) | Proportional gain for active power control loop | number | > 0 | 0.5 |
| Proportional Gain (Q) | Proportional gain for reactive power control loop | number | > 0 | 0.5 |
| Frequency | System frequency (50 Hz or 60 Hz) | radio | 50, 60 | 50 Hz |
| Algorithm | Power flow algorithm to use | radio | nr, iwamoto_nr, bfsw | Newton-Raphson (nr) |
Multiple Scenarios Mode
When selecting "Multiple Scenarios" mode, you can evaluate five different operational scenarios simultaneously. Each scenario has editable target P and Q values:
| Scenario | Default P (MW) | Default Q (Mvar) | Typical Use Case |
|---|---|---|---|
| Load Supply | 15.0 | 8.0 | BESS supplying load demand with inductive reactive power |
| Power Export | -20.0 | -5.0 | BESS exporting power to grid with capacitive reactive power |
| Reactive Support | 0.0 | 10.0 | BESS providing only reactive power support (voltage regulation) |
| Capacitive Support | 5.0 | -8.0 | BESS providing active power and capacitive reactive power |
| Balanced | 10.0 | 5.0 | Balanced active and reactive power scenario |
All scenario values are editable before running the calculation. The results show the required BESS power for each scenario separately, allowing you to determine the maximum BESS capacity needed across all scenarios.
Output Results
For each scenario (or single target), the results include:
| Output Parameter | Description | Unit |
|---|---|---|
| Required BESS Power (P) | Active power output required from BESS Negative = discharging (generation), Positive = charging (consumption) |
MW |
| Required BESS Power (Q) | Reactive power output required from BESS Positive = inductive, Negative = capacitive |
Mvar |
| Apparent Power (S) | Total apparent power required: S = √(P² + Q²) | MVA |
| Achieved P at POC | Actual active power achieved at Point of Coupling after BESS control | MW |
| Achieved Q at POC | Actual reactive power achieved at Point of Coupling after BESS control | Mvar |
| Error P | Difference between target and achieved active power at POC | MW |
| Error Q | Difference between target and achieved reactive power at POC | Mvar |
| Converged | Whether the algorithm converged within tolerance | Yes/No |
| Iterations | Number of control loop iterations performed | integer |
Visualization (Multiple Scenarios Only)
When running multiple scenarios, the results include two visualization plots:
- POC P–Q (Target vs Achieved) Plot: Shows a scatter plot comparing target and achieved P/Q values at the Point of Coupling. Blue circles represent target values, green circles represent achieved values. Dashed lines connect target-achieved pairs for each scenario.
- Required BESS P–Q Plot: Shows a scatter plot of the required BESS active and reactive power for each scenario. Green circles represent the calculated BESS requirements.
Both plots include grid lines, axis labels, and scenario name annotations for easy identification.
Algorithm Details
The sizing algorithm implements a proportional controller with the following characteristics:
- Initial Guess:
initial_p = -target_p_mw × 1.05andinitial_q = -target_q_mvar × 1.05. The negative sign accounts for the fact that BESS must discharge (negative P from BESS perspective) to supply positive power at POC, and the 1.05 factor accounts for losses. - Control Loop: Uses proportional control with damping factor of 0.5 to prevent oscillations:
delta_p = -kp_p × error_p × dampingdelta_q = -kp_q × error_q × damping
- Sign Convention:
- At POC: Positive P = consumption from grid, Negative P = generation to grid
- For BESS: Negative P = discharging (generation), Positive P = charging (consumption)
- Convergence: Algorithm converges when
|error_p| < toleranceAND|error_q| < tolerance
Limitations and Considerations
Important Notes:
- The algorithm may not converge if the target P/Q values are outside the BESS capability limits
- Network losses are automatically accounted for in the calculation
- For time-series analysis (state-of-charge tracking), additional energy capacity parameters are required
- This sizing calculation is for steady-state power flow and does not consider dynamic behavior
- If convergence fails, try increasing max iterations, adjusting proportional gains, or checking if targets are feasible
Technical References
Based on: pandapower control framework with custom BESS control controller implementation.
Algorithm Type: Iterative proportional control with Newton-Raphson power flow solver.
Documentation References: 📘 pandapower Control Documentation 📘 pandapower Storage Element
Development Process
Electrisim is continuously being developed to provide enhanced features and capabilities for power system analysis.
Contributing
Electrisim is built on open-source foundations, and we welcome contributions from the community. Whether you're reporting bugs, suggesting features, or contributing code, your input helps make Electrisim better.
Roadmap
Future developments planned for Electrisim include:
- Enhanced visualization capabilities
- Additional analysis methods
- Improved user interface and workflow
- Extended element libraries
- Advanced controller implementations
- Integration with more open-source tools
Feedback and Support
If you encounter any issues or have suggestions for improvement, please contact us through the contact form on the main website or visit our GitHub repository.
Version History
Electrisim is regularly updated with bug fixes, performance improvements, and new features. Check the application for the latest version information.
Acknowledgments
Electrisim would not be possible without the excellent work of the following development teams and projects:
- pandapower - A powerful Python library for power system analysis and optimization.
- OpenDSS - An open-source distribution system simulator developed by EPRI.
- draw.io - The diagramming framework that powers Electrisim's visual interface, enabling intuitive drag-and-drop network design.
We are grateful for their continued development and maintenance of these powerful open-source tools.
Last updated: October 2025