{"library":"power-grid-model","title":"Power Grid Model","description":"Power Grid Model is a Python/C++ library designed for high-performance steady-state distribution power system analysis. It provides functionalities for Power Flow, State Estimation, and Short Circuit calculations, with its core implemented in C++ for efficiency. The library is actively developed, with frequent releases providing new features and improvements.","language":"python","status":"active","last_verified":"Thu Apr 16","install":{"commands":["pip install power-grid-model"],"cli":null},"imports":["from power_grid_model import PowerGridModel","from power_grid_model import initialize_array","from power_grid_model import AttributeType","from power_grid_model import ComponentType","from power_grid_model import DatasetType"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import numpy as np\nfrom power_grid_model import PowerGridModel, initialize_array, ComponentType, AttributeType, DatasetType\n\n# 1. Define input data using structured NumPy arrays\n# Node data\nnode_data = initialize_array(DatasetType.input, ComponentType.node, 2)\nnode_data[AttributeType.id] = [1, 2]\nnode_data[AttributeType.u_rated] = [10.5e3, 10.5e3] # 10.5 kV rated voltage\n\n# Line data\nline_data = initialize_array(DatasetType.input, ComponentType.line, 1)\nline_data[AttributeType.id] = [3]\nline_data[AttributeType.from_node] = [1]\nline_data[AttributeType.to_node] = [2]\nline_data[AttributeType.r1] = [0.1] # Resistance\nline_data[AttributeType.x1] = [0.2] # Reactance\n\n# Symmetric load data for node 2\nsym_load_data = initialize_array(DatasetType.input, ComponentType.sym_load, 1)\nsym_load_data[AttributeType.id] = [4]\nsym_load_data[AttributeType.node] = [2]\nsym_load_data[AttributeType.p_const] = [1e5] # 100 kW constant power\nsym_load_data[AttributeType.q_const] = [5e4] # 50 kVAr constant reactive power\n\n# Source data for node 1\nsource_data = initialize_array(DatasetType.input, ComponentType.source, 1)\nsource_data[AttributeType.id] = [5]\nsource_data[AttributeType.node] = [1]\nsource_data[AttributeType.u_ref] = [1.0] # 1.0 p.u. voltage reference\nsource_data[AttributeType.u_rated] = [10.5e3]\n\ninput_data = {\n    ComponentType.node: node_data,\n    ComponentType.line: line_data,\n    ComponentType.sym_load: sym_load_data,\n    ComponentType.source: source_data\n}\n\n# 2. Create the power grid model instance\nmodel = PowerGridModel(system_frequency=50.0, input_data=input_data)\n\n# 3. Perform a power flow calculation\noutput_data = model.calculate_power_flow()\n\n# 4. Access results (example: node voltages)\nnode_output = output_data[ComponentType.node]\nprint(\"Node Voltage Results:\")\nfor node_id, voltage in zip(node_output[AttributeType.id], node_output[AttributeType.u]):\n    print(f\"Node {node_id}: {voltage:.2f} V\")\n","lang":"python","description":"This quickstart demonstrates how to set up a simple two-node, one-line network with a source and a symmetric load, create a `PowerGridModel` instance, perform a power flow calculation, and retrieve the results. Data is provided as dictionaries of NumPy structured arrays, which is the native data interface for the C++ core.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}