{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Short-Circuit Calculation according to IEC 60909\n", "\n", "pandapower supports short-circuit calculations with the method of equivalent voltage source at the fault location according to IEC 60909. The pandapower short-circuit calculation supports the following elements:\n", "\n", "- sgen (as motor or as full converter generator or as asynchronous machine or as doubly-fed asynchronous machine)\n", "- gen (as synchronous generator)\n", "- ext_grid\n", "- line\n", "- trafo\n", "- trafo3w\n", "- impedance\n", "\n", "with the correction factors as defined in IEC 60909. Loads and shunts are neglected as per standard. The pandapower switch model is fully integrated into the short-circuit calculation. \n", "\n", "The following short-circuit currents can be calculated:\n", "- ikss (Initial symmetrical short-circuit current)\n", "- ip (short-circuit current peak)\n", "- ith (equivalent thermal short-circuit current)\n", "\n", "either as\n", "\n", " - symmetrical three-phase or\n", " - asymmetrical two-phase\n", " \n", "short circuit current. Calculations are available for meshed as well as for radial networks. ip and ith are only implemented for short circuits far from synchronous generators.\n", "\n", "In addition, short-circuit calculation with the superposition method is implemented. With this method, the pre-fault voltage is considered. The following differences to the worst-case calculation apply:\n", "- transformer correction factor is not applied\n", "- load, sgen are additionally modelled as shunt admittances (calculated based on their pre-fault currents)\n", "- the grid must contain the results of a successful power flow calculation\n", "\n", "The results for all elements and different short-circuit currents are tested against commercial software to ensure that correction factors are correctly applied. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example Network\n", "\n", "Here is a little example on how to use the short-circuit calculation. First, we create a simple open ring network with 4 buses, that are connected by one transformer and two lines with one open sectioning point. The network is fed by an external grid connection at bus 1:\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandapower as pp\n", "import pandapower.shortcircuit as sc\n", "\n", "def ring_network():\n", " net = pp.create_empty_network()\n", " b1 = pp.create_bus(net, 220)\n", " b2 = pp.create_bus(net, 110)\n", " b3 = pp.create_bus(net, 110)\n", " b4 = pp.create_bus(net, 110)\n", " pp.create_ext_grid(net, b1, s_sc_max_mva=100., s_sc_min_mva=80., rx_min=0.20, rx_max=0.35)\n", " pp.create_transformer(net, b1, b2, \"100 MVA 220/110 kV\")\n", " pp.create_line(net, b2, b3, std_type=\"N2XS(FL)2Y 1x120 RM/35 64/110 kV\" , length_km=15.)\n", " l2 = pp.create_line(net, b3, b4, std_type=\"N2XS(FL)2Y 1x120 RM/35 64/110 kV\" , length_km=12.)\n", " pp.create_line(net, b4, b2, std_type=\"N2XS(FL)2Y 1x120 RM/35 64/110 kV\" , length_km=10.)\n", " pp.create_switch(net, b4, l2, closed=False, et=\"l\")\n", " return net" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Symmetric Short-Circuit Calculation\n", "\n", "### Maximum Short Circuit Currents\n", "Now, we load the network and calculate the maximum short-circuit currents with the calc_sc function:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "hp.pandapower.shortcircuit.calc_sc - WARNING: Branch results are in beta mode and might not always be reliable, especially for transformers\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:240: RuntimeWarning: invalid value encountered in log\n", " m = (np.exp(4 * f * tk_s * np.log(kappa - 1)) - 1) / (2 * f * tk_s * np.log(kappa - 1))\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:654: RuntimeWarning: All-NaN slice encountered\n", " ppci[\"branch\"][:, IP_F] = np.nanmax(np.abs(ip_all_f), axis=1) / baseI[fb]\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:655: RuntimeWarning: All-NaN slice encountered\n", " ppci[\"branch\"][:, IP_T] = np.nanmax(np.abs(ip_all_t), axis=1) / baseI[tb]\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:671: RuntimeWarning: All-NaN slice encountered\n", " ppci[\"branch\"][:, ITH_F] = np.nanmax(np.abs(ith_all_f), axis=1) / baseI[fb]\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:672: RuntimeWarning: All-NaN slice encountered\n", " ppci[\"branch\"][:, ITH_T] = np.nanmax(np.abs(ith_all_t), axis=1) / baseI[fb]\n" ] }, { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.262432100.0000000.5058340.263723175.878566502.510189
10.47645490.7766370.9425890.47903944.276323139.778739
20.46667188.9127580.9154180.46912346.571323142.268739
30.46989289.5263970.9243010.47238645.806323141.438739
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.262432 100.000000 0.505834 0.263723 175.878566 502.510189\n", "1 0.476454 90.776637 0.942589 0.479039 44.276323 139.778739\n", "2 0.466671 88.912758 0.915418 0.469123 46.571323 142.268739\n", "3 0.469892 89.526397 0.924301 0.472386 45.806323 141.438739" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = ring_network()\n", "sc.calc_sc(net, case=\"max\", ip=True, ith=True, branch_results=True)\n", "net.res_bus_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where ikss is the initial short-circuit current, ip is the peak short-circuit current and ith is the thermal equivalent current.\n", "\n", "For branches, the results are defined as the maximum current flows through that occurs for a fault at any bus in the network. The results are available seperately for lines:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "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", "
ikss_kaikss_from_kaikss_from_degreeikss_to_kaikss_to_degreep_from_mwq_from_mvarp_to_mwq_to_mvarvm_from_puva_from_degreevm_to_puva_to_degreeip_kaith_ka
00.4666710.466671-71.8742680.466671108.1257321.4994281.626830.0000000.0000000.024883-24.5406210.016703-24.7212990.9154180.469123
10.0000000.0000000.0000000.0000000.0000000.0000000.000000.0000000.0000000.016703-24.7212990.016703-24.7212990.0000000.000000
20.4698920.469892107.9450550.469892-72.0549450.0000000.000001.0134641.0995750.024883-24.5406210.024883-24.5406210.9243010.472386
\n", "
" ], "text/plain": [ " ikss_ka ikss_from_ka ikss_from_degree ikss_to_ka ikss_to_degree \\\n", "0 0.466671 0.466671 -71.874268 0.466671 108.125732 \n", "1 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "2 0.469892 0.469892 107.945055 0.469892 -72.054945 \n", "\n", " p_from_mw q_from_mvar p_to_mw q_to_mvar vm_from_pu va_from_degree \\\n", "0 1.499428 1.62683 0.000000 0.000000 0.024883 -24.540621 \n", "1 0.000000 0.00000 0.000000 0.000000 0.016703 -24.721299 \n", "2 0.000000 0.00000 1.013464 1.099575 0.024883 -24.540621 \n", "\n", " vm_to_pu va_to_degree ip_ka ith_ka \n", "0 0.016703 -24.721299 0.915418 0.469123 \n", "1 0.016703 -24.721299 0.000000 0.000000 \n", "2 0.024883 -24.540621 0.924301 0.472386 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_line_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and transformers:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "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", "
ikss_hv_kaikss_hv_degreeikss_lv_kaikss_lv_degreep_hv_mwq_hv_mvarp_lv_mwq_lv_mvarvm_hv_puva_hv_degreevm_lv_puva_lv_degree
00.238227-72.4238780.476454107.5761221.69979610.8724450.00.00.1237689.2400490.024883-24.540621
\n", "
" ], "text/plain": [ " ikss_hv_ka ikss_hv_degree ikss_lv_ka ikss_lv_degree p_hv_mw \\\n", "0 0.238227 -72.423878 0.476454 107.576122 1.699796 \n", "\n", " q_hv_mvar p_lv_mw q_lv_mvar vm_hv_pu va_hv_degree vm_lv_pu \\\n", "0 10.872445 0.0 0.0 0.123768 9.240049 0.024883 \n", "\n", " va_lv_degree \n", "0 -24.540621 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_trafo_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Minimum Short Circuit Currents" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Minimum short-circuits can be calculated in the same way. However, we need to specify the end temperature of the lines after a fault as per standard first:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "hp.pandapower.shortcircuit.calc_sc - WARNING: Branch results are in beta mode and might not always be reliable, especially for transformers\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:240: RuntimeWarning: invalid value encountered in log\n", " m = (np.exp(4 * f * tk_s * np.log(kappa - 1)) - 1) / (2 * f * tk_s * np.log(kappa - 1))\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:654: RuntimeWarning: All-NaN slice encountered\n", " ppci[\"branch\"][:, IP_F] = np.nanmax(np.abs(ip_all_f), axis=1) / baseI[fb]\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:655: RuntimeWarning: All-NaN slice encountered\n", " ppci[\"branch\"][:, IP_T] = np.nanmax(np.abs(ip_all_t), axis=1) / baseI[tb]\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:671: RuntimeWarning: All-NaN slice encountered\n", " ppci[\"branch\"][:, ITH_F] = np.nanmax(np.abs(ith_all_f), axis=1) / baseI[fb]\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:672: RuntimeWarning: All-NaN slice encountered\n", " ppci[\"branch\"][:, ITH_T] = np.nanmax(np.abs(ith_all_t), axis=1) / baseI[fb]\n" ] }, { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.20994680.0000000.4625340.211736118.650262593.251309
10.38442273.2423070.8608740.38797429.969247162.464019
20.37760871.9439980.8328320.38084632.815047164.954019
30.37986172.3731800.8419820.38319731.866447164.124019
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.209946 80.000000 0.462534 0.211736 118.650262 593.251309\n", "1 0.384422 73.242307 0.860874 0.387974 29.969247 162.464019\n", "2 0.377608 71.943998 0.832832 0.380846 32.815047 164.954019\n", "3 0.379861 72.373180 0.841982 0.383197 31.866447 164.124019" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = ring_network()\n", "net.line[\"endtemp_degree\"] = 80\n", "sc.calc_sc(net, case=\"min\", ith=True, ip=True, branch_results=True)\n", "net.res_bus_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The branch results are now the minimum current flows through each branch:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "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", "
ikss_kaikss_from_kaikss_from_degreeikss_to_kaikss_to_degreep_from_mwq_from_mvarp_to_mwq_to_mvarvm_from_puva_from_degreevm_to_puva_to_degreeip_kaith_ka
00.3776080.377608-78.7487800.377608101.2512200.0-0.00.0-0.00.00.00.00.08.328324e-013.808460e-01
10.0000000.0000000.0000000.0000000.0000000.0-0.00.0-0.00.00.00.00.01.000000e+101.000000e+10
20.3798610.379861100.9878790.379861-79.0121210.0-0.00.0-0.00.00.00.00.08.419815e-013.831970e-01
\n", "
" ], "text/plain": [ " ikss_ka ikss_from_ka ikss_from_degree ikss_to_ka ikss_to_degree \\\n", "0 0.377608 0.377608 -78.748780 0.377608 101.251220 \n", "1 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "2 0.379861 0.379861 100.987879 0.379861 -79.012121 \n", "\n", " p_from_mw q_from_mvar p_to_mw q_to_mvar vm_from_pu va_from_degree \\\n", "0 0.0 -0.0 0.0 -0.0 0.0 0.0 \n", "1 0.0 -0.0 0.0 -0.0 0.0 0.0 \n", "2 0.0 -0.0 0.0 -0.0 0.0 0.0 \n", "\n", " vm_to_pu va_to_degree ip_ka ith_ka \n", "0 0.0 0.0 8.328324e-01 3.808460e-01 \n", "1 0.0 0.0 1.000000e+10 1.000000e+10 \n", "2 0.0 0.0 8.419815e-01 3.831970e-01 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_line_sc" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "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", "
ikss_hv_kaikss_hv_degreeikss_lv_kaikss_lv_degreep_hv_mwq_hv_mvarp_lv_mwq_lv_mvarvm_hv_puva_hv_degreevm_lv_puva_lv_degree
00.188804-78.748780.377608101.251220.00.0-1.217329-1.0651310.00.00.00.0
\n", "
" ], "text/plain": [ " ikss_hv_ka ikss_hv_degree ikss_lv_ka ikss_lv_degree p_hv_mw q_hv_mvar \\\n", "0 0.188804 -78.74878 0.377608 101.25122 0.0 0.0 \n", "\n", " p_lv_mw q_lv_mvar vm_hv_pu va_hv_degree vm_lv_pu va_lv_degree \n", "0 -1.217329 -1.065131 0.0 0.0 0.0 0.0 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_trafo_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Asynchronous Motors\n", "\n", "Asynchronous motors can be specified by creating a static generator of type \"motor\". For the short circuit impedance, an R/X ratio \"rx\" as well as the ratio between nominal current and short circuit current \"k\" has to be specified:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "This pandapower network includes the following parameter tables:\n", " - bus (4 element)\n", " - sgen (1 elements)\n", " - switch (1 elements)\n", " - ext_grid (1 elements)\n", " - line (3 element)\n", " - trafo (1 elements)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = ring_network()\n", "pp.create_sgen(net, 2, p_mw=0, sn_mva=0.5, k=1.2, rx=7., type=\"motor\")\n", "net" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we run the short-circuit calculation again, we can see that the currents increased due to the contribution of the inverteres to the short-circuit currents." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:240: RuntimeWarning: invalid value encountered in log\n", " m = (np.exp(4 * f * tk_s * np.log(kappa - 1)) - 1) / (2 * f * tk_s * np.log(kappa - 1))\n" ] }, { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.264007100.6000000.5080610.265306175.878566502.510189
10.47960391.3766370.9470430.48220544.276323139.778739
20.46982089.5127580.9198710.47228946.571323142.268739
30.47299890.1181340.9286930.47550945.806323141.438739
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.264007 100.600000 0.508061 0.265306 175.878566 502.510189\n", "1 0.479603 91.376637 0.947043 0.482205 44.276323 139.778739\n", "2 0.469820 89.512758 0.919871 0.472289 46.571323 142.268739\n", "3 0.472998 90.118134 0.928693 0.475509 45.806323 141.438739" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sc.calc_sc(net, case=\"max\", ith=True, ip=True)\n", "net.res_bus_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Synchronous Generators\n", "\n", "Synchronous generators can also be considered in the short-circuit calculation with the gen element. According to the standard, the rated power factor (cos$\\varphi$) \"cos_phi\", rated voltage \"vn_kv\", rated apparent power \"sn_kva\" and subtransient resistance \"rdss\" and reactance \"xdss\" are necessary to calculate the short circuit impedance:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "This pandapower network includes the following parameter tables:\n", " - bus (4 element)\n", " - gen (1 elements)\n", " - switch (1 elements)\n", " - ext_grid (1 elements)\n", " - line (3 element)\n", " - trafo (1 elements)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = ring_network()\n", "pp.create_gen(net, 2, p_mw=0, vm_pu=1.0, cos_phi=0.8, vn_kv=22, sn_mva=5, xdss_pu=0.2, rdss_ohm=0.005)\n", "net" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and run the short-circuit calculation again:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "hp.pandapower.shortcircuit.calc_sc - WARNING: aperiodic, thermal short-circuit currents are only implemented for faults far from generators!\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:240: RuntimeWarning: invalid value encountered in log\n", " m = (np.exp(4 * f * tk_s * np.log(kappa - 1)) - 1) / (2 * f * tk_s * np.log(kappa - 1))\n" ] }, { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.568039216.4518991.2853050.57357240.720778242.572728
11.180874224.9866992.7108561.1932978.06025858.607387
21.187256226.2026372.7771751.2011557.20474758.398291
31.144754218.1049812.5705261.1554769.59025860.267387
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.568039 216.451899 1.285305 0.573572 40.720778 242.572728\n", "1 1.180874 224.986699 2.710856 1.193297 8.060258 58.607387\n", "2 1.187256 226.202637 2.777175 1.201155 7.204747 58.398291\n", "3 1.144754 218.104981 2.570526 1.155476 9.590258 60.267387" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sc.calc_sc(net, case=\"max\", ith=True, ip=True)\n", "net.res_bus_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once again, the short-circuit current increases due to the contribution of the generator. As can be seen in the warning, the values for peak and thermal equivalent short-circuit current will only be accurate for faults far from generators." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Meshed Networks\n", "\n", "The correction factors for aperiodic and thermal currents differ between meshed and radial networks. pandapower includes a meshing detection that automatically detects the meshing for each short-circuit location. Alternatively, the topology can be set to \"radial\" or \"meshed\" to circumvent the check and save calculation time.\n", "\n", "We load the radial network and close the open sectioning point to get a closed ring network:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.262432100.0000000.5058340.263723175.878566502.510189
10.47645490.7766370.9425890.47903944.276323139.778739
20.47059389.6600730.9262440.47309845.640917141.259279
30.47164989.8612560.9291740.47416845.392809140.990090
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.262432 100.000000 0.505834 0.263723 175.878566 502.510189\n", "1 0.476454 90.776637 0.942589 0.479039 44.276323 139.778739\n", "2 0.470593 89.660073 0.926244 0.473098 45.640917 141.259279\n", "3 0.471649 89.861256 0.929174 0.474168 45.392809 140.990090" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = ring_network()\n", "net.switch.closed = True\n", "sc.calc_sc(net, topology=\"auto\", ip=True, ith=True)\n", "net.res_bus_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "the network is automatically detected to be meshed and application factors are applied. This can be validated by setting the topology to radial and comparing the results:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.262432100.0000000.5058340.263723175.878566502.510189
10.47645490.7766370.9425890.47903944.276323139.778739
20.47059389.6600730.9262440.47309845.640917141.259279
30.47164989.8612560.9291740.47416845.392809140.990090
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.262432 100.000000 0.505834 0.263723 175.878566 502.510189\n", "1 0.476454 90.776637 0.942589 0.479039 44.276323 139.778739\n", "2 0.470593 89.660073 0.926244 0.473098 45.640917 141.259279\n", "3 0.471649 89.861256 0.929174 0.474168 45.392809 140.990090" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sc.calc_sc(net, topology=\"radial\", ip=True, ith=True)\n", "net.res_bus_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we look at the line results, we can see that the line currents are significantly smaller than the bus currents:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "hp.pandapower.shortcircuit.calc_sc - WARNING: Branch results are in beta mode and might not always be reliable, especially for transformers\n" ] }, { "data": { "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", "
ikss_kaikss_from_kaikss_from_degreeikss_to_kaikss_to_degreep_from_mwq_from_mvarp_to_mwq_to_mvarvm_from_puva_from_degreevm_to_puva_to_degreeip_kaith_ka
00.2798120.279812-72.0943390.279812107.9056610.5390600.5848630.0000000.0000000.014920-24.7606930.005438-24.8200040.5507400.281301
10.1907810.190781107.9056610.190781-72.0943390.0895010.0971060.2004770.2175110.005438-24.8200040.008138-24.7606930.3755040.191796
20.3441760.344176107.8463490.344176-72.1536510.0000000.0000000.5437200.5899180.008138-24.7606930.014920-24.7606930.6780460.346014
\n", "
" ], "text/plain": [ " ikss_ka ikss_from_ka ikss_from_degree ikss_to_ka ikss_to_degree \\\n", "0 0.279812 0.279812 -72.094339 0.279812 107.905661 \n", "1 0.190781 0.190781 107.905661 0.190781 -72.094339 \n", "2 0.344176 0.344176 107.846349 0.344176 -72.153651 \n", "\n", " p_from_mw q_from_mvar p_to_mw q_to_mvar vm_from_pu va_from_degree \\\n", "0 0.539060 0.584863 0.000000 0.000000 0.014920 -24.760693 \n", "1 0.089501 0.097106 0.200477 0.217511 0.005438 -24.820004 \n", "2 0.000000 0.000000 0.543720 0.589918 0.008138 -24.760693 \n", "\n", " vm_to_pu va_to_degree ip_ka ith_ka \n", "0 0.005438 -24.820004 0.550740 0.281301 \n", "1 0.008138 -24.760693 0.375504 0.191796 \n", "2 0.014920 -24.760693 0.678046 0.346014 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sc.calc_sc(net, topology=\"auto\", ip=True, ith=True, branch_results=True)\n", "net.res_line_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "this is because the short-circuit current is split up on both paths of the ring, which is correctly considered by pandapower." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fault Impedance\n", "\n", "It is also possible to specify a fault impedance in the short-circuit calculation:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\kappa.py:25: RuntimeWarning: invalid value encountered in divide\n", " kappa = _kappa(ppc[\"bus\"][:, R_EQUIV] / ppc[\"bus\"][:, X_EQUIV])\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:240: RuntimeWarning: invalid value encountered in log\n", " m = (np.exp(4 * f * tk_s * np.log(kappa - 1)) - 1) / (2 * f * tk_s * np.log(kappa - 1))\n" ] } ], "source": [ "net = ring_network()\n", "sc.calc_sc(net, topology=\"radial\", ip=True, ith=True, r_fault_ohm=1., x_fault_ohm=2.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "which of course decreases the short-circuit currents:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.26134399.5850980.5035090.262627176.878566504.510189
10.46938289.4293050.9266560.47190945.276323141.778739
20.45987587.6179500.9003790.46227447.571323144.268739
30.46300588.2143880.9089720.46544646.806323143.438739
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.261343 99.585098 0.503509 0.262627 176.878566 504.510189\n", "1 0.469382 89.429305 0.926656 0.471909 45.276323 141.778739\n", "2 0.459875 87.617950 0.900379 0.462274 47.571323 144.268739\n", "3 0.463005 88.214388 0.908972 0.465446 46.806323 143.438739" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_bus_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Superposition method\n", "\n", "We need to first execute the power flow calculation so that the grid has valid power flow results. We rely on the user to execute this step explicitly so that the user is fully aware that a power flow calculation is executed and also has control over all the relevant options for the power flow calculation.\n", "\n", "Next, we pass the parameter use\\_pre\\_fault\\_voltage = True to use the superposition method." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "hp.pandapower.shortcircuit.calc_sc - WARNING: Branch results are in beta mode and might not always be reliable, especially for transformers\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\kappa.py:25: RuntimeWarning: invalid value encountered in divide\n", " kappa = _kappa(ppc[\"bus\"][:, R_EQUIV] / ppc[\"bus\"][:, X_EQUIV])\n", "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:240: RuntimeWarning: invalid value encountered in log\n", " m = (np.exp(4 * f * tk_s * np.log(kappa - 1)) - 1) / (2 * f * tk_s * np.log(kappa - 1))\n" ] } ], "source": [ "pp.runpp(net)\n", "sc.calc_sc(net, topology=\"radial\", ip=True, ith=True, r_fault_ohm=1., x_fault_ohm=2., \n", " branch_results=True, return_all_currents=True)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.26134399.5850980.5035090.262627176.878566504.510189
10.46938289.4293050.9266560.47190945.276323141.778739
20.45987587.6179500.9003790.46227447.571323144.268739
30.46300588.2143880.9089720.46544646.806323143.438739
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.261343 99.585098 0.503509 0.262627 176.878566 504.510189\n", "1 0.469382 89.429305 0.926656 0.471909 45.276323 141.778739\n", "2 0.459875 87.617950 0.900379 0.462274 47.571323 144.268739\n", "3 0.463005 88.214388 0.908972 0.465446 46.806323 143.438739" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_bus_sc" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ikss_kaikss_from_kaikss_from_degreeikss_to_kaikss_to_degreep_from_mwq_from_mvarp_to_mwq_to_mvarvm_from_puva_from_degreevm_to_puva_to_degreeip_kaith_ka
linebus
000.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.004601-7.2446590.004601-7.2446590.0000000.000000
10.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.016526-8.8544320.016526-8.8544320.0000000.000000
20.4598750.459875-71.7504920.459875108.2495082.0905292.848703-0.634455-1.2689100.040328-18.0236870.016192-8.3155430.9003790.462274
30.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.032438-16.5821100.032438-16.5821100.0000000.000000
100.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.004601-7.2446590.004601-7.2446590.0000000.000000
10.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.016526-8.8544320.016526-8.8544320.0000000.000000
20.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.016192-8.3155430.016192-8.3155430.0000000.000000
30.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.032438-16.5821100.032438-16.5821100.0000000.000000
200.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.004601-7.2446590.004601-7.2446590.0000000.000000
10.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.016526-8.8544320.016526-8.8544320.0000000.000000
20.0000000.0000000.0000000.0000000.0000000.000000-0.0000000.000000-0.0000000.040328-18.0236870.040328-18.0236870.0000000.000000
30.4630050.463005108.0723210.463005-71.927679-0.643122-1.2862441.6270992.3538270.016302-8.4927300.032438-16.5821100.9089720.465446
\n", "
" ], "text/plain": [ " ikss_ka ikss_from_ka ikss_from_degree ikss_to_ka \\\n", "line bus \n", "0 0 0.000000 0.000000 0.000000 0.000000 \n", " 1 0.000000 0.000000 0.000000 0.000000 \n", " 2 0.459875 0.459875 -71.750492 0.459875 \n", " 3 0.000000 0.000000 0.000000 0.000000 \n", "1 0 0.000000 0.000000 0.000000 0.000000 \n", " 1 0.000000 0.000000 0.000000 0.000000 \n", " 2 0.000000 0.000000 0.000000 0.000000 \n", " 3 0.000000 0.000000 0.000000 0.000000 \n", "2 0 0.000000 0.000000 0.000000 0.000000 \n", " 1 0.000000 0.000000 0.000000 0.000000 \n", " 2 0.000000 0.000000 0.000000 0.000000 \n", " 3 0.463005 0.463005 108.072321 0.463005 \n", "\n", " ikss_to_degree p_from_mw q_from_mvar p_to_mw q_to_mvar \\\n", "line bus \n", "0 0 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", " 1 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", " 2 108.249508 2.090529 2.848703 -0.634455 -1.268910 \n", " 3 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", "1 0 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", " 1 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", " 2 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", " 3 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", "2 0 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", " 1 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", " 2 0.000000 0.000000 -0.000000 0.000000 -0.000000 \n", " 3 -71.927679 -0.643122 -1.286244 1.627099 2.353827 \n", "\n", " vm_from_pu va_from_degree vm_to_pu va_to_degree ip_ka \\\n", "line bus \n", "0 0 0.004601 -7.244659 0.004601 -7.244659 0.000000 \n", " 1 0.016526 -8.854432 0.016526 -8.854432 0.000000 \n", " 2 0.040328 -18.023687 0.016192 -8.315543 0.900379 \n", " 3 0.032438 -16.582110 0.032438 -16.582110 0.000000 \n", "1 0 0.004601 -7.244659 0.004601 -7.244659 0.000000 \n", " 1 0.016526 -8.854432 0.016526 -8.854432 0.000000 \n", " 2 0.016192 -8.315543 0.016192 -8.315543 0.000000 \n", " 3 0.032438 -16.582110 0.032438 -16.582110 0.000000 \n", "2 0 0.004601 -7.244659 0.004601 -7.244659 0.000000 \n", " 1 0.016526 -8.854432 0.016526 -8.854432 0.000000 \n", " 2 0.040328 -18.023687 0.040328 -18.023687 0.000000 \n", " 3 0.016302 -8.492730 0.032438 -16.582110 0.908972 \n", "\n", " ith_ka \n", "line bus \n", "0 0 0.000000 \n", " 1 0.000000 \n", " 2 0.462274 \n", " 3 0.000000 \n", "1 0 0.000000 \n", " 1 0.000000 \n", " 2 0.000000 \n", " 3 0.000000 \n", "2 0 0.000000 \n", " 1 0.000000 \n", " 2 0.000000 \n", " 3 0.465446 " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_line_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results above show the line results for the short-circuit calculation. The result table has a MultiIndex, which means that the results are shown for every line (\"line\" index column) and for every situation defined by a different fault location bus separately (index column \"bus\"). Note that not only the current magnitude values are available, but also the current angles, along with active and reactive power flows, and voltage magnitude and angle." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Asymetrical Two-Phase Short-Circuit Calculation\n", "\n", "All calculations above can be carried out for a two-phase short-circuit current in the same way by specifying \"2ph\" in the fault parameter:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:240: RuntimeWarning: invalid value encountered in log\n", " m = (np.exp(4 * f * tk_s * np.log(kappa - 1)) - 1) / (2 * f * tk_s * np.log(kappa - 1))\n" ] }, { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.22727328.8675130.4380650.228391175.878566502.510189
10.41262126.2049580.8163060.41486044.276323139.778739
20.40414925.6669020.7927750.40627246.571323142.268739
30.40693825.8440450.8004680.40909945.806323141.438739
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.227273 28.867513 0.438065 0.228391 175.878566 502.510189\n", "1 0.412621 26.204958 0.816306 0.414860 44.276323 139.778739\n", "2 0.404149 25.666902 0.792775 0.406272 46.571323 142.268739\n", "3 0.406938 25.844045 0.800468 0.409099 45.806323 141.438739" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = ring_network()\n", "sc.calc_sc(net, fault=\"2ph\", ip=True, ith=True)\n", "net.res_bus_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Two phase short-circuits are often used for minimum short-circuit calculations:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\users\\rbolgaryn\\repos\\pandapower\\pandapower\\shortcircuit\\currents.py:240: RuntimeWarning: invalid value encountered in log\n", " m = (np.exp(4 * f * tk_s * np.log(kappa - 1)) - 1) / (2 * f * tk_s * np.log(kappa - 1))\n" ] }, { "data": { "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", "
ikss_kaskss_mwip_kaith_kark_ohmxk_ohm
00.18181823.0940110.4005660.183369118.650262593.251309
10.33292021.1432330.7455380.33599529.969247162.464019
20.32677220.7528270.7178150.32952133.457647164.954019
30.32880720.8820730.7268340.33165732.294847164.124019
\n", "
" ], "text/plain": [ " ikss_ka skss_mw ip_ka ith_ka rk_ohm xk_ohm\n", "0 0.181818 23.094011 0.400566 0.183369 118.650262 593.251309\n", "1 0.332920 21.143233 0.745538 0.335995 29.969247 162.464019\n", "2 0.326772 20.752827 0.717815 0.329521 33.457647 164.954019\n", "3 0.328807 20.882073 0.726834 0.331657 32.294847 164.124019" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = ring_network()\n", "net.line[\"endtemp_degree\"] = 150\n", "sc.calc_sc(net, fault=\"2ph\", case=\"min\", ip=True, ith=True)\n", "net.res_bus_sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Single Phase Short-Circuit Calculation\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "pandapower can also calculate single phase short-circuits. The ground fault however depends on the zero-sequence parameters of the network, which have to be added in order to calculate a single line to ground fault:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "net = ring_network()\n", "\n", "#r/x ratio in zero sequence parameters\n", "net.ext_grid[\"r0x0_max\"] = 0.4\n", "net.ext_grid[\"x0x_max\"] = 1.0\n", "\n", "#zero sequence line parameters\n", "net.line[\"r0_ohm_per_km\"] = 0.244\n", "net.line[\"x0_ohm_per_km\"] = 0.336\n", "net.line[\"c0_nf_per_km\"] = 2000\n", "\n", "#transformer vector group, zero sequence short circuit voltage\n", "#and zero sequence magnetizing impedance\n", "net.trafo[\"vector_group\"] = \"Dyn\"\n", "net.trafo[\"vk0_percent\"] = 5.\n", "net.trafo[\"vkr0_percent\"] = 0.4\n", "net.trafo[\"mag0_percent\"] = 10\n", "net.trafo[\"mag0_rx\"] = 0.4\n", "net.trafo[\"si0_hv_partial\"] = 0.9" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "sc.calc_sc(net, fault=\"1ph\")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "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", "
ikss_kark0_ohmxk0_ohmrk_ohmxk_ohm
00.261047201.004076502.510189175.878566502.510189
10.6986640.6730066.83525744.276323139.778739
20.6688675.65656412.81145446.571323142.268739
30.6800103.28767610.34650845.806323141.438739
\n", "
" ], "text/plain": [ " ikss_ka rk0_ohm xk0_ohm rk_ohm xk_ohm\n", "0 0.261047 201.004076 502.510189 175.878566 502.510189\n", "1 0.698664 0.673006 6.835257 44.276323 139.778739\n", "2 0.668867 5.656564 12.811454 46.571323 142.268739\n", "3 0.680010 3.287676 10.346508 45.806323 141.438739" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_bus_sc" ] } ], "metadata": { "anaconda-cloud": {}, "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.10.8" } }, "nbformat": 4, "nbformat_minor": 1 }