{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Use of the static grid equivalents\n", "This tutorial gives a quick overview of the grid equivalents function. This script gives an example to reduce a grid area using the IEEE case9 grid." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Determination of grid areas\n", "\n", "The user can determine the grid area of interest (internal area), the grid area for the reduction (external area), and the boundary buses between them. The figure below schows an example of the grid with identified grid areas:\n", "\n", "- internal area (buses): [0, 3, 4, 8]\n", "- boundary buses: [4, 8] (boundary buses belong to the internal area)\n", "- external area (buses): [1, 2, 5, 6, 7] \n", "\n", "\"ALT\"\n", "\n", "In order to identify the user-defined area, the boundary buses and one of the internal buses must be provided as inputs.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Required inputs\n", "\n", "The most important inputs for grid equivalents are:\n", "- net: pandapower grid including power flow results\n", "- eq_type: the method used to determine the equivalent grid, e.g., \"rei\", \"ward\", \"xward\"\n", "- boundary_buses: indices of boundary buses (as a list) that divide the original grid into the internal areas and the external areas. Based on the figure above, boundary_buses = [4, 8] \n", "- internal_buses: bus indices (as a list), which are within the internal area. Based on the figure above, internal_buses = [0]. Just one of the internal buses is enough, the function will find and consider the remaining internal buses during the equivalent calculation. If 'internal_buses' is an empty list or None, the complete grid is treated as an external area." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example: REI-equivalent\n", "In the following, the reduction of the external grid (buses [1, 2, 5, 6, 7] of the grid case 9) in the figure above is shown.\n", "First, the necessary libraries need to be imported." ] }, { "cell_type": "code", "execution_count": 170, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:44.404432Z", "start_time": "2024-03-30T08:31:44.400556Z" } }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", "import pandapower as pp\n", "import pandapower.plotting as plotting\n", "import pandapower.networks\n", "import pandapower.grid_equivalents" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Subsequently, the IEEE case 9 grid model is created, and its power flow is calculated." ] }, { "cell_type": "code", "execution_count": 171, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:44.698304Z", "start_time": "2024-03-30T08:31:44.489441Z" } }, "outputs": [ { "data": { "text/plain": "This pandapower network includes the following parameter tables:\n - bus (9 elements)\n - load (3 elements)\n - gen (2 elements)\n - ext_grid (1 element)\n - line (9 elements)\n - poly_cost (3 elements)\n and the following results tables:\n - res_bus (9 elements)\n - res_line (9 elements)\n - res_ext_grid (1 element)\n - res_load (3 elements)\n - res_gen (2 elements)" }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = pp.networks.case9()\n", "net.sn_mva = 1.0\n", "pp.runpp(net)\n", "net" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "Next, we define the input parameters according to the figure above and obtain the REI-equivalent." ] }, { "cell_type": "code", "execution_count": 172, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:44.703918Z", "start_time": "2024-03-30T08:31:44.699314Z" } }, "outputs": [], "source": [ "# equivalent type\n", "eq_type = \"rei\"\n", "\n", "# boundary buses\n", "boundary_buses = [4, 8]\n", "\n", "# internal buses \n", "internal_buses = [0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, the equivalent function is called, and the grid reduction is executed." ] }, { "cell_type": "code", "execution_count": 173, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:45.134335Z", "start_time": "2024-03-30T08:31:44.705926Z" } }, "outputs": [], "source": [ "net_eq = pp.grid_equivalents.get_equivalent(net, eq_type, boundary_buses, internal_buses)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, the grid equivalent is obtained: \"net_eq\" is the REI-equivalent grid model. We can compare the power flow results between the original grid \"net\" and the reduced grid \"net_eq\". " ] }, { "cell_type": "code", "execution_count": 174, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:45.153755Z", "start_time": "2024-03-30T08:31:45.136330Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--- power flow (original grid) ---\n" ] }, { "data": { "text/plain": " vm_pu va_degree p_mw q_mvar\n0 1.000000 0.000000 -71.954702 -24.068958\n1 1.000000 9.668741 -163.000000 -14.460120\n2 1.000000 4.771073 -85.000000 3.649026\n3 0.987007 -2.406644 0.000000 0.000000\n4 0.975472 -4.017264 90.000000 30.000000\n5 1.003375 1.925602 0.000000 0.000000\n6 0.985645 0.621545 100.000000 35.000000\n7 0.996185 3.799120 0.000000 0.000000\n8 0.957621 -4.349934 125.000000 50.000000", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
vm_puva_degreep_mwq_mvar
01.0000000.000000-71.954702-24.068958
11.0000009.668741-163.000000-14.460120
21.0000004.771073-85.0000003.649026
30.987007-2.4066440.0000000.000000
40.975472-4.01726490.00000030.000000
51.0033751.9256020.0000000.000000
60.9856450.621545100.00000035.000000
70.9961853.7991200.0000000.000000
80.957621-4.349934125.00000050.000000
\n
" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--- power flow (reduced grid) ---\n" ] }, { "data": { "text/plain": " vm_pu va_degree p_mw q_mvar\n0 1.000000 0.000000 -71.954702 -24.068958\n3 0.987007 -2.406644 0.000000 0.000000\n4 0.975472 -4.017264 89.283896 8.224645\n8 0.957621 -4.349934 124.581896 32.419383\n9 0.985645 0.621545 99.317421 0.635364\n10 1.000000 9.668741 -162.192474 -24.665476\n11 1.000000 4.771073 -83.866102 -11.311074", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
vm_puva_degreep_mwq_mvar
01.0000000.000000-71.954702-24.068958
30.987007-2.4066440.0000000.000000
40.975472-4.01726489.2838968.224645
80.957621-4.349934124.58189632.419383
90.9856450.62154599.3174210.635364
101.0000009.668741-162.192474-24.665476
111.0000004.771073-83.866102-11.311074
\n
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"--- power flow (original grid) ---\")\n", "display(net.res_bus)\n", "print(\"--- power flow (reduced grid) ---\")\n", "display(net_eq.res_bus)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It can be seen that the power flow results (*vm_pu*, *va_degree*) of the internal buses [0, 3, 4, 8] in both grids are the same , i.e., the equivalent calculation is successful. The *p_mw* and *q_mvar* values at the boundary buses [4, 8] are different due to the equivalent devices. During the grid reduction, additional equivalent devices (e.g., additional buses [9, 10, 11], impedance, shunts, etc.) are created, representing the interaction between the internal area and the external area, and maintaining the grid states in the internal area. We can see the additional shunts in the grid equivalent:" ] }, { "cell_type": "code", "execution_count": 175, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:45.170626Z", "start_time": "2024-03-30T08:31:45.154860Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--- shunts (original grid) ---\n" ] }, { "data": { "text/plain": "Empty DataFrame\nColumns: [bus, name, q_mvar, p_mw, vn_kv, step, max_step, in_service]\nIndex: []", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
busnameq_mvarp_mwvn_kvstepmax_stepin_service
\n
" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--- shunts (reduced grid) ---\n" ] }, { "data": { "text/plain": " bus name q_mvar p_mw vn_kv step max_step in_service\n1 4 eq_shunt -22.884186 -0.752570 345.0 1 1 True\n2 8 eq_shunt -19.171087 -0.455928 345.0 1 1 True\n3 9 eq_shunt -35.372912 -0.702606 345.0 1 1 True\n4 10 eq_shunt -10.205356 0.807526 345.0 1 1 True\n5 11 eq_shunt -14.960100 1.133898 345.0 1 1 True", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
busnameq_mvarp_mwvn_kvstepmax_stepin_service
14eq_shunt-22.884186-0.752570345.011True
28eq_shunt-19.171087-0.455928345.011True
39eq_shunt-35.372912-0.702606345.011True
410eq_shunt-10.2053560.807526345.011True
511eq_shunt-14.9601001.133898345.011True
\n
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"--- shunts (original grid) ---\")\n", "display(net.shunt)\n", "print(\"--- shunts (reduced grid) ---\")\n", "display(net_eq.shunt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example: (X)Ward-equivalent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the following, we demonstrate an example for the (x)ward-equivalent. We change the equivalent type and repeat the equivalent calculation." ] }, { "cell_type": "code", "execution_count": 176, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:45.500073Z", "start_time": "2024-03-30T08:31:45.171625Z" } }, "outputs": [], "source": [ "# equivalent type\n", "eq_type = \"ward\" # for xward-equivalent: eq_type = \"xward\"\n", "\n", "# run equivalent calculation\n", "net_eq_ward = pp.grid_equivalents.get_equivalent(net, eq_type, boundary_buses, \n", " internal_buses)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, the ward equivalent is obtained. We can verify the power flow results." ] }, { "cell_type": "code", "execution_count": 177, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:45.521503Z", "start_time": "2024-03-30T08:31:45.501041Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--- power flow (original grid) ---\n" ] }, { "data": { "text/plain": " vm_pu va_degree p_mw q_mvar\n0 1.000000 0.000000 -71.954702 -24.068958\n1 1.000000 9.668741 -163.000000 -14.460120\n2 1.000000 4.771073 -85.000000 3.649026\n3 0.987007 -2.406644 0.000000 0.000000\n4 0.975472 -4.017264 90.000000 30.000000\n5 1.003375 1.925602 0.000000 0.000000\n6 0.985645 0.621545 100.000000 35.000000\n7 0.996185 3.799120 0.000000 0.000000\n8 0.957621 -4.349934 125.000000 50.000000", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
vm_puva_degreep_mwq_mvar
01.0000000.000000-71.954702-24.068958
11.0000009.668741-163.000000-14.460120
21.0000004.771073-85.0000003.649026
30.987007-2.4066440.0000000.000000
40.975472-4.01726490.00000030.000000
51.0033751.9256020.0000000.000000
60.9856450.621545100.00000035.000000
70.9961853.7991200.0000000.000000
80.957621-4.349934125.00000050.000000
\n
" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--- power flow (reduced grid) ---\n" ] }, { "data": { "text/plain": " vm_pu va_degree p_mw q_mvar\n0 1.000000 0.000000 -71.954702 -24.068958\n3 0.987007 -2.406644 0.000000 0.000000\n4 0.975472 -4.017264 28.820879 10.232062\n8 0.957621 -4.349934 42.681861 39.100723", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
vm_puva_degreep_mwq_mvar
01.0000000.000000-71.954702-24.068958
30.987007-2.4066440.0000000.000000
40.975472-4.01726428.82087910.232062
80.957621-4.34993442.68186139.100723
\n
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"--- power flow (original grid) ---\")\n", "display(net.res_bus)\n", "print(\"--- power flow (reduced grid) ---\")\n", "display(net_eq_ward.res_bus)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The power flow results (*vm_pu*, *va_degree*) for the internal buses [0, 3, 4, 8] in both grids are the same. The external area is represented by the addtional *ward* elements in the grid model \"net_eq_ward\", attached at the boundary buses [4, 8]: " ] }, { "cell_type": "code", "execution_count": 178, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:45.539335Z", "start_time": "2024-03-30T08:31:45.522512Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--- ward (original grid) ---\n" ] }, { "data": { "text/plain": "Empty DataFrame\nColumns: [name, bus, ps_mw, qs_mvar, qz_mvar, pz_mw, in_service]\nIndex: []", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namebusps_mwqs_mvarqz_mvarpz_mwin_service
\n
" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--- ward (reduced grid) ---\n" ] }, { "data": { "text/plain": " name bus ps_mw qs_mvar qz_mvar pz_mw \\\n0 network_equivalent 4 -61.258111 34.553823 -57.087899 0.083012 \n1 network_equivalent 8 -83.211209 41.300941 -56.922631 0.973863 \n\n in_service \n0 True \n1 True ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namebusps_mwqs_mvarqz_mvarpz_mwin_service
0network_equivalent4-61.25811134.553823-57.0878990.083012True
1network_equivalent8-83.21120941.300941-56.9226310.973863True
\n
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"--- ward (original grid) ---\")\n", "display(net.ward)\n", "print(\"--- ward (reduced grid) ---\")\n", "display(net_eq_ward.ward)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Defining the zones based on boundary branches\n", "\n", "For this example we will use the lines between the buses 4 ... 5 and 7 ... 8\n", "\n", "With the function *set_bus_zone_by_boundary_branches* we first define the zones of the grid based on this separation. Thereafter, with the function *get_boundaries_by_bus_zone_with_boundary_branches*, we obtain the boundary buses that we can use with the functions for obtaining the grid equivalents, as showed in previous sections." ] }, { "cell_type": "code", "execution_count": 179, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:45.585367Z", "start_time": "2024-03-30T08:31:45.540341Z" } }, "outputs": [], "source": [ "boundary_branches = {\"line\": [2, 7]}\n", "pp.grid_equivalents.set_bus_zone_by_boundary_branches(net, boundary_branches)\n", "buses, branches = pp.grid_equivalents.get_boundaries_by_bus_zone_with_boundary_branches(net)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The dictionary *buses* contains the biundary buses, internal buses and external buses from the point of view of each of the zones." ] }, { "cell_type": "code", "execution_count": 180, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:45.596909Z", "start_time": "2024-03-30T08:31:45.588413Z" } }, "outputs": [ { "data": { "text/plain": "{0: {'all': {4, 5, 7, 8}, 'internal': {4, 8}, 'external': {5, 7}, 1: {5, 7}},\n 1: {'all': {4, 5, 7, 8}, 'internal': {5, 7}, 'external': {4, 8}, 0: {4, 8}},\n 'all': {4, 5, 7, 8}}" }, "execution_count": 180, "metadata": {}, "output_type": "execute_result" } ], "source": [ "buses" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resulting separation can be seen in the figure below. The green buses are the nodes of the boundary lines that are part of the internal zone. The red buses are the nodes of the boundary lines that are in the external zone. The red dashed lines are the boundary lines." ] }, { "cell_type": "code", "execution_count": 183, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:46.234785Z", "start_time": "2024-03-30T08:31:45.660899Z" } }, "outputs": [ { "data": { "text/plain": "" }, "execution_count": 183, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": "
", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAIkCAYAAAAkr54iAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABrRUlEQVR4nO3deVxU9d4H8M+ZAYZ9kB0EZHHXVAQFNC21XHO5qVma2XqzMh+zbqXde7u3btmebWZ2S/OmaYmmpblUbimisrivCLLvMsM+zMx5/kBGSVTAmTmzfN695vU8nDkHvucehA+/VRBFUQQRERERmZRM6gKIiIiI7AFDFxEREZEZMHQRERERmQFDFxEREZEZMHQRERERmQFDFxEREZEZMHQRERERmYGD1AUYm16vR35+Pjw8PCAIgtTlEBERkY0TRRGVlZUIDg6GTHb99iybC135+fkIDQ2VugwiIiKyMzk5OQgJCbnu+zYXujw8PAA03rinp6fE1RAREZGtU6vVCA0NNWSQ67G50NXUpejp6cnQRURERGZzs2FNHEhPREREZAYMXURERERmwNBFREREZAYMXURERERmwNBFREREZAYMXURERERmwNBFREREZAYMXURERERmwNBFREREZAYmDV2ff/45+vTpY1gdPiEhAb/88ssNr9m9ezdiYmLg7OyMyMhILF261JQlEhEREZmFSUNXSEgI3nrrLRw+fBiHDx/G8OHDMXHiRJw4caLF8zMzMzF27FgMGTIEaWlpWLhwIebOnYvExERTlklERERkcoIoiqI5v6C3tzfeffddPPbYY9e899JLL2HTpk04deqU4djs2bNx5MgRJCUlterzq9VqKJVKqFQq7r1IREREJtfa7GG2MV06nQ5r1qxBdXU1EhISWjwnKSkJI0eObHZs1KhROHz4MBoaGlq8pr6+Hmq1utmLiIiIyNKYPHQdO3YM7u7uUCgUmD17NjZs2ICePXu2eG5hYSECAgKaHQsICIBWq0VpaWmL1yxatAhKpdLwCg0NNfo9EBEREd0qk4eubt26IT09HQcOHMBTTz2FWbNm4eTJk9c9XxCEZh839X7++XiTBQsWQKVSGV45OTnGK56IiIjISBxM/QWcnJzQuXNnAEBsbCwOHTqEjz76CF988cU15wYGBqKwsLDZseLiYjg4OMDHx6fFz69QKKBQKIxfOJEd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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "zone = 1\n", "\n", "#plotting.generic_geodata.create_generic_coordinates(net, overwrite=True)\n", "plotting.plotting_toolbox.set_line_geodata_from_bus_geodata(net, overwrite=True)\n", "\n", "import geopandas as gpd\n", "import geojson\n", "\n", "fig, ax=plt.subplots(figsize=(7,11))\n", "\n", "net.bus.geo = net.bus.geo.apply(lambda x: geojson.loads(x))\n", "net.bus = gpd.GeoDataFrame(net.bus, geometry='geo')\n", "net.line.geo = net.line.geo.apply(lambda x: geojson.loads(x))\n", "net.line = gpd.GeoDataFrame(net.line, geometry='geo')\n", "\n", "net.line.plot(ax=ax)\n", "net.line.loc[list(boundary_branches[\"line\"])].plot(ax=ax, color='red', linestyle=\"--\")\n", "net.bus.plot(column=net.bus.zone.values, ax=ax,zorder=10)\n", "net.bus.loc[net.ext_grid.bus.values].plot(ax=ax, color='k', marker=\"s\", markersize=200)\n", "\n", "net.bus.loc[list(buses[zone][\"external\"])].plot(color='r', ax=ax, zorder=100, markersize=100)\n", "net.bus.loc[list(buses[zone][\"internal\"])].plot(color='g', ax=ax, zorder=100, markersize=100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can obtain the grid equivalent to reduce the zone 0" ] }, { "cell_type": "code", "execution_count": 184, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:47.175676Z", "start_time": "2024-03-30T08:31:46.236799Z" } }, "outputs": [], "source": [ "b_internal = [net.bus.loc[net.bus.zone==1].index[0]]\n", "net_eq = pp.grid_equivalents.get_equivalent(net, \"rei\", buses[1][\"internal\"], b_internal)" ] }, { "cell_type": "code", "execution_count": 185, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:47.197696Z", "start_time": "2024-03-30T08:31:47.177303Z" } }, "outputs": [ { "data": { "text/plain": " name vn_kv type zone in_service max_vm_pu \\\n0 1 345.0 b 0 True 1.1 \n1 2 345.0 b 1 True 1.1 \n5 6 345.0 b 1 True 1.1 \n7 8 345.0 b 1 True 1.1 \n8 load_integrated-total 4/6/8 345.0 b None True 1.1 \n9 gen_separate-total 2 345.0 b NaN True NaN \n\n min_vm_pu geo \n0 0.9 POINT (-2.91341 -0.64387) \n1 0.9 POINT (0.93699 -0.11737) \n5 0.9 POINT (-1.29440 1.87189) \n7 0.9 POINT (-0.06390 0.28582) \n8 0.9 None \n9 NaN None ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namevn_kvtypezonein_servicemax_vm_pumin_vm_pugeo
01345.0b0True1.10.9POINT (-2.91341 -0.64387)
12345.0b1True1.10.9POINT (0.93699 -0.11737)
56345.0b1True1.10.9POINT (-1.29440 1.87189)
78345.0b1True1.10.9POINT (-0.06390 0.28582)
8load_integrated-total 4/6/8345.0bNoneTrue1.10.9None
9gen_separate-total 2345.0bNaNTrueNaNNaNNone
\n
" }, "execution_count": 185, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net_eq.bus" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Grid equivalents with DC lines" ] }, { "cell_type": "code", "execution_count": 186, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:47.264530Z", "start_time": "2024-03-30T08:31:47.199715Z" } }, "outputs": [], "source": [ "pp.drop_lines(net, [2])\n", "pp.create_dcline(net, 4, 5, 50, 0.5, 0.7, 1.0, 1.0)\n", "pp.runpp(net)" ] }, { "cell_type": "code", "execution_count": 187, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:48.349740Z", "start_time": "2024-03-30T08:31:47.266487Z" } }, "outputs": [], "source": [ "net_eq = pp.grid_equivalents.get_equivalent(net, \"rei\", [4,8], [0])" ] }, { "cell_type": "code", "execution_count": 188, "metadata": { "ExecuteTime": { "end_time": "2024-03-30T08:31:48.377132Z", "start_time": "2024-03-30T08:31:48.352738Z" } }, "outputs": [ { "data": { "text/plain": " name vn_kv type zone in_service max_vm_pu \\\n0 1 345.0 b 0 True 1.1 \n3 4 345.0 b 0 True 1.1 \n4 5 345.0 b 0 True 1.1 \n8 9 345.0 b 0 True 1.1 \n9 load_integrated-total 6 345.0 b None True 1.1 \n10 gen_separate-total 1 345.0 b NaN True NaN \n11 gen_separate-total 2 345.0 b NaN True NaN \n12 gen_separate-total 5 345.0 b NaN True NaN \n\n min_vm_pu geo \n0 0.9 POINT (-2.91341 -0.64387) \n3 0.9 POINT (-2.05494 0.00979) \n4 0.9 POINT (-2.17891 1.14892) \n8 0.9 POINT (-0.98302 -0.39409) \n9 0.9 None \n10 NaN None \n11 NaN None \n12 NaN None ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namevn_kvtypezonein_servicemax_vm_pumin_vm_pugeo
01345.0b0True1.10.9POINT (-2.91341 -0.64387)
34345.0b0True1.10.9POINT (-2.05494 0.00979)
45345.0b0True1.10.9POINT (-2.17891 1.14892)
89345.0b0True1.10.9POINT (-0.98302 -0.39409)
9load_integrated-total 6345.0bNoneTrue1.10.9None
10gen_separate-total 1345.0bNaNTrueNaNNaNNone
11gen_separate-total 2345.0bNaNTrueNaNNaNNone
12gen_separate-total 5345.0bNaNTrueNaNNaNNone
\n
" }, "execution_count": 188, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net_eq.bus" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" } }, "nbformat": 4, "nbformat_minor": 2 }