Help us improve
Share bugs, ideas, or general feedback.
From powergridmodel
Performs steady-state distribution power system analysis including power flow, state estimation, short-circuit calculations, and batch simulations using power-grid-model library with numpy structured arrays.
npx claudepluginhub datathings/marketplace --plugin powergridmodelHow this skill is triggered — by the user, by Claude, or both
Slash command
/powergridmodel:powergridmodelThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
`power-grid-model` is a high-performance C++ library with a Python interface for steady-state distribution power system analysis. It operates on numpy structured arrays via a dictionary-based data model and supports symmetric (single-phase equivalent) and asymmetric (full three-phase) calculations.
Analyzes electric power networks with pandapower v3.4.0: builds models (buses, lines, transformers, loads, generators), runs AC/DC power flow, OPF, short circuit (IEC 60909), state estimation, time series, topology, plotting.
Performs cybersecurity assessments on power grid infrastructure: NERC CIP compliance verification, IEC 61850 protocol analysis, substation automation security, PMU networks, and threats like Industroyer/CrashOverride.
Conducts cybersecurity assessments of electric power grid infrastructure: EMS/SCADA, substation automation, NERC CIP compliance, and IEC 61850/PMU security.
Share bugs, ideas, or general feedback.
power-grid-model is a high-performance C++ library with a Python interface for steady-state distribution power system analysis. It operates on numpy structured arrays via a dictionary-based data model and supports symmetric (single-phase equivalent) and asymmetric (full three-phase) calculations.
Version: v1.13.10 Language: Python (C++ core) License: Mozilla Public License 2.0 (MPL-2.0) Repo: https://github.com/PowerGridModel/power-grid-model
from power_grid_model import PowerGridModel, LoadGenType, initialize_array
# Build component arrays
node = initialize_array('input', 'node', 2)
node['id'] = [1, 2]; node['u_rated'] = [10.5e3, 10.5e3]
line = initialize_array('input', 'line', 1)
line['id'] = [3]; line['from_node'] = [1]; line['to_node'] = [2]
line['from_status'] = [1]; line['to_status'] = [1]
line['r1'] = [0.25]; line['x1'] = [0.2]; line['c1'] = [10e-6]; line['tan1'] = [0.0]
sym_load = initialize_array('input', 'sym_load', 1)
sym_load['id'] = [4]; sym_load['node'] = [2]; sym_load['status'] = [1]
sym_load['type'] = [LoadGenType.const_power]
sym_load['p_specified'] = [2e6]; sym_load['q_specified'] = [0.5e6]
source = initialize_array('input', 'source', 1)
source['id'] = [5]; source['node'] = [1]; source['status'] = [1]; source['u_ref'] = [1.0]
input_data = {'node': node, 'line': line, 'sym_load': sym_load, 'source': source}
model = PowerGridModel(input_data, system_frequency=50.0)
result = model.calculate_power_flow()
# result['node'] contains: id, energized, u_pu, u_angle, u, p, q
dict[str, np.ndarray] — structured arrays created via initialize_array(data_type, component_type, shape). Dataset types: input, update, sym_output, asym_output, sc_output.symmetric=True (default) solves a balanced single-phase equivalent; symmetric=False solves the full three-phase abc system and requires zero-sequence parameters.update_data (2-D dense array or sparse CSR dict) to run many scenarios in one call. Pass list[BatchDataset] for Cartesian product dimensions (time-series x contingency).initialize_array; do not leave required fields as NaN.| Domain | File | Description |
|---|---|---|
| Core API | api-core.md | PowerGridModel, calculate_power_flow, calculate_state_estimation, calculate_short_circuit, initialize_array, serialization |
| Components | api-components.md | All 22 component types, attributes, numpy dtypes, enumerations |
| Validation | api-validation.md | validate_input_data, validate_batch_data, ValidationError, ValidationException |
| Batch | api-batch.md | Dense/sparse batch format, Cartesian product, threading, error handling, output structure |
| Workflows | workflows.md | Complete working examples for all calculation types |
assert_valid_input_data or validate_input_data from power_grid_model.validation.n_measurements >= 2*n_nodes - 1. Missing sensors cause NotObservableError at runtime.generic_branch.k is the off-nominal ratio, not the voltage ratio — must be set explicitly for tap changers; the library does not compute it from node voltages.threading=0 for large batches to use all hardware cores.r0, x0, c0, etc.) for lines and appropriate winding configurations for transformers. generic_branch does not support asymmetric mode.