{ "cells": [ { "cell_type": "markdown", "id": "ba935880", "metadata": {}, "source": [ "# pypowsybl Interface" ] }, { "cell_type": "markdown", "id": "4dbfd3fd", "metadata": {}, "source": [ "\"PowSyBl (Power System Blocks) is an open source framework written in Java, dedicated to electrical grid modelling and simulation, licensed under the Mozilla Public License version 2.0. It is part of LF Energy, an open source foundation focused on the power systems sector, hosted within The Linux Foundation.\"\n", "\n", "``pypowsybl`` is the Python interface to PowSybl. For more information, please visit:\n", "\n", "" ] }, { "cell_type": "markdown", "id": "f40a409b", "metadata": {}, "source": [ "ANDES provides a simple interface to `pypowsybl`. The main goal is to leverage `pypowsybl` for drawing single-line diagrams and area diagrams for systems loaded in ANDES." ] }, { "cell_type": "markdown", "id": "1144fcff", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 1, "id": "c44737ca", "metadata": {}, "outputs": [], "source": [ "import andes\n", "import pypowsybl as pp\n", "\n", "from andes.interop.pypowsybl import to_pypowsybl" ] }, { "cell_type": "code", "execution_count": 2, "id": "aa846e2e", "metadata": { "scrolled": true }, "outputs": [], "source": [ "ss = andes.load(andes.get_case(\"ieee14/ieee14_linetrip.xlsx\"))" ] }, { "cell_type": "markdown", "id": "29fde89e", "metadata": {}, "source": [ "## Conversion" ] }, { "cell_type": "markdown", "id": "f426e6a0", "metadata": {}, "source": [ "Convert to a pypowsybl network:" ] }, { "cell_type": "code", "execution_count": 3, "id": "50741aff", "metadata": {}, "outputs": [], "source": [ "n = to_pypowsybl(ss)" ] }, { "cell_type": "markdown", "id": "52b32e43", "metadata": {}, "source": [ "Run power flow in pypowsybl:" ] }, { "cell_type": "code", "execution_count": 4, "id": "29cd4a5a", "metadata": {}, "outputs": [], "source": [ "results = pp.loadflow.run_ac(n)" ] }, { "cell_type": "markdown", "id": "f54ea0a3", "metadata": {}, "source": [ "## Diagrams" ] }, { "cell_type": "markdown", "id": "1c75f33d", "metadata": {}, "source": [ "`pypowsybl` provides two functions to draw diagrams:\n", "- `get_network_area_diagram(VOLTAGE_LEVEL_ID = None, DEPTH = 0)`\n", "- `get_single_line_diagram(CONTAINER_ID)`\n", "\n", "These function names are self explanatory. To draw the diagram for the whole network, do" ] }, { "cell_type": "code", "execution_count": 7, "id": "6f7e0071", "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/svg+xml": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 51\n \n \n \n \n \n \n -16\n \n \n \n \n \n \n \n \n \n \n \n -50\n \n \n \n \n \n \n 17\n \n \n \n \n \n \n \n \n \n \n \n \n \n 31\n \n \n \n \n \n \n -1\n \n \n \n \n \n \n \n \n \n \n \n -30\n \n \n \n \n \n \n 3\n \n \n \n \n \n \n \n \n \n \n \n \n \n 18\n \n \n \n \n \n \n 6\n \n \n \n \n \n \n \n \n \n \n \n -18\n \n \n \n \n \n \n -6\n \n \n \n \n \n \n \n \n \n \n \n \n \n 29\n \n \n \n \n \n \n 0\n \n \n \n \n \n \n \n \n \n \n \n -29\n \n \n \n \n \n \n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n 21\n \n \n \n \n \n \n 1\n \n \n \n \n \n \n \n \n \n \n \n -21\n \n \n \n \n \n \n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n 8\n \n \n \n \n \n \n -6\n \n \n \n \n \n \n \n \n \n \n \n -8\n \n \n \n \n \n \n 6\n \n \n \n \n \n \n \n \n \n \n \n \n \n -36\n \n \n \n \n \n \n 4\n \n \n \n \n \n \n \n \n \n \n \n 36\n \n \n \n \n \n \n -3\n \n \n \n \n \n \n \n \n \n \n \n \n \n -1\n \n \n \n \n \n \n -16\n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n \n 16\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 26\n \n \n \n \n \n \n -5\n \n \n \n \n \n \n \n \n \n \n \n \n -26\n \n \n \n \n \n \n 6\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n -8\n \n \n \n \n \n \n 2\n \n \n \n \n \n \n \n \n \n \n \n \n 8\n \n \n \n \n \n \n -1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n \n \n \n \n \n \n 5\n \n \n \n \n \n \n \n \n \n \n \n 0\n \n \n \n \n \n \n -5\n \n \n \n \n \n \n \n \n \n \n \n \n \n 7\n \n \n \n \n \n \n 2\n \n \n \n \n \n \n \n \n \n \n \n -7\n \n \n \n \n \n \n -2\n \n \n \n \n \n \n \n \n \n \n \n \n \n 16\n \n \n \n \n \n \n 4\n \n \n \n \n \n \n \n \n \n \n \n -15\n \n \n \n \n \n \n -4\n \n \n \n \n \n \n \n \n \n \n \n \n \n 34\n \n \n \n \n \n \n 1\n \n \n \n \n \n \n \n \n \n \n \n -34\n \n \n \n \n \n \n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n 35\n \n \n \n \n \n \n 18\n \n \n \n \n \n \n \n \n \n \n \n \n -35\n \n \n \n \n \n \n -17\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 13\n \n \n \n \n \n \n 3\n \n \n \n \n \n \n \n \n \n \n \n -13\n \n \n \n \n \n \n -2\n \n \n \n \n \n \n \n \n \n \n \n \n \n 18\n \n \n \n \n \n \n -6\n \n \n \n \n \n \n \n \n \n \n \n -17\n \n \n \n \n \n \n 7\n \n \n \n \n \n \n \n \n \n \n \n \n \n 4\n \n \n \n \n \n \n -3\n \n \n \n \n \n \n \n \n \n \n \n -3\n \n \n \n \n \n \n 3\n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n \n 0\n \n \n \n \n \n \n \n \n \n \n \n -1\n \n \n \n \n \n \n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n \n -2\n \n \n \n \n \n \n \n \n \n \n \n -3\n \n \n \n \n \n \n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n VL1\n VL2\n VL3\n VL4\n VL5\n VL6\n VL7\n VL8\n VL9\n VL10\n VL11\n VL12\n VL13\n VL14\n \n\n", "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n.get_network_area_diagram()" ] }, { "cell_type": "markdown", "id": "0a672386", "metadata": {}, "source": [ "To draw the SLD for bus 6, do" ] }, { "cell_type": "code", "execution_count": 10, "id": "c07cc358", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": "\n\n \n \n \n \n \n 6\n \n \n \n \n \n \n \n \n \n Line_8_ONE\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n \n \n \n \n 5\n \n \n \n \n \n \n \n \n \n \n \n \n \n Line_9_ONE\n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n 7\n \n \n \n \n \n \n \n \n \n \n \n \n \n Line_10_ONE\n \n \n \n \n \n \n \n \n \n \n \n \n \n 16\n \n \n \n \n 4\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n PQ_5\n \n \n \n \n \n \n \n \n \n \n \n \n \n 8\n \n \n \n \n 15\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n GEN4\n \n \n \n \n \n \n \n \n \n \n \n \n \n -30\n \n \n \n \n -20\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Line_19_ONE\n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n -8\n \n \n \n \n \n \n\n", "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n.get_single_line_diagram(\"VL6\")" ] }, { "cell_type": "markdown", "id": "5bf452ee", "metadata": {}, "source": [ "where `VL6` is the voltage level container created for Bus 6. Voltage level container is named as `VL` + bus `idx`." ] }, { "cell_type": "markdown", "id": "7f51cee3", "metadata": {}, "source": [ "To find out how to work with pypowsybl, visit its documentation at " ] } ], "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.10" } }, "nbformat": 4, "nbformat_minor": 5 }