88
99import logging
1010from functools import lru_cache
11+ from importlib .metadata import version
1112from typing import Dict , List , MutableMapping , Optional , Tuple , Type
1213
1314import numpy as np
14- import pandapower as pp
1515import pandas as pd
1616import structlog
1717from packaging .version import Version
3636
3737logger = structlog .get_logger (__file__ )
3838
39- pp_curr_version = Version (pp . __version__ )
39+ pp_curr_version = Version (version ( "pandapower" ) )
4040pp_ref_version = Version ("3.1.2" )
4141
4242
@@ -1844,6 +1844,13 @@ def _pp_buses_output_3ph__accumulate_power(self, pp_output_buses_3ph: pd.DataFra
18441844 # Finally apply the unit conversion (W -> MW and VAR -> MVAR)
18451845 pp_output_buses_3ph [power_columns ] /= 1e6
18461846
1847+ def get_loss_params_3ph (self ):
1848+ if pp_curr_version <= pp_ref_version :
1849+ loss_params = ["p_a_l_mw" , "q_a_l_mvar" , "p_b_l_mw" , "q_b_l_mvar" , "p_c_l_mw" , "q_c_l_mvar" ]
1850+ else :
1851+ loss_params = ["pl_a_mw" , "ql_a_mvar" , "pl_b_mw" , "ql_b_mvar" , "pl_c_mw" , "ql_c_mvar" ]
1852+ return loss_params
1853+
18471854 def _pp_lines_output_3ph (self ):
18481855 """
18491856 This function converts a power-grid-model Line output array to a Line Dataframe of PandaPower.
@@ -1870,6 +1877,7 @@ def _pp_lines_output_3ph(self):
18701877 i_from = (pgm_output_lines ["p_from" ] + 1j * pgm_output_lines ["q_from" ]) / u_complex .iloc [from_nodes , :]
18711878 i_to = (pgm_output_lines ["p_to" ] + 1j * pgm_output_lines ["q_to" ]) / u_complex .iloc [to_nodes , :]
18721879
1880+ loss_params = self .get_loss_params_3ph ()
18731881 pp_output_lines_3ph = pd .DataFrame (
18741882 columns = [
18751883 "p_a_from_mw" ,
@@ -1884,12 +1892,12 @@ def _pp_lines_output_3ph(self):
18841892 "q_b_to_mvar" ,
18851893 "p_c_to_mw" ,
18861894 "q_c_to_mvar" ,
1887- "pl_a_mw" ,
1888- "ql_a_mvar" ,
1889- "pl_b_mw" ,
1890- "ql_b_mvar" ,
1891- "pl_c_mw" ,
1892- "ql_c_mvar" ,
1895+ loss_params [ 0 ] ,
1896+ loss_params [ 1 ] ,
1897+ loss_params [ 2 ] ,
1898+ loss_params [ 3 ] ,
1899+ loss_params [ 4 ] ,
1900+ loss_params [ 5 ] ,
18931901 "i_a_from_ka" ,
18941902 "i_b_from_ka" ,
18951903 "i_c_from_ka" ,
@@ -1922,12 +1930,12 @@ def _pp_lines_output_3ph(self):
19221930 pp_output_lines_3ph ["q_b_to_mvar" ] = pgm_output_lines ["q_to" ][:, 1 ] * 1e-6
19231931 pp_output_lines_3ph ["p_c_to_mw" ] = pgm_output_lines ["p_to" ][:, 2 ] * 1e-6
19241932 pp_output_lines_3ph ["q_c_to_mvar" ] = pgm_output_lines ["q_to" ][:, 2 ] * 1e-6
1925- pp_output_lines_3ph ["pl_a_mw" ] = (pgm_output_lines ["p_from" ][:, 0 ] + pgm_output_lines ["p_to" ][:, 0 ]) * 1e-6
1926- pp_output_lines_3ph ["ql_a_mvar" ] = (pgm_output_lines ["q_from" ][:, 0 ] + pgm_output_lines ["q_to" ][:, 0 ]) * 1e-6
1927- pp_output_lines_3ph ["pl_b_mw" ] = (pgm_output_lines ["p_from" ][:, 1 ] + pgm_output_lines ["p_to" ][:, 1 ]) * 1e-6
1928- pp_output_lines_3ph ["ql_b_mvar" ] = (pgm_output_lines ["q_from" ][:, 1 ] + pgm_output_lines ["q_to" ][:, 1 ]) * 1e-6
1929- pp_output_lines_3ph ["pl_c_mw" ] = (pgm_output_lines ["p_from" ][:, 2 ] + pgm_output_lines ["p_to" ][:, 2 ]) * 1e-6
1930- pp_output_lines_3ph ["ql_c_mvar" ] = (pgm_output_lines ["q_from" ][:, 2 ] + pgm_output_lines ["q_to" ][:, 2 ]) * 1e-6
1933+ pp_output_lines_3ph [loss_params [ 0 ] ] = (pgm_output_lines ["p_from" ][:, 0 ] + pgm_output_lines ["p_to" ][:, 0 ]) * 1e-6
1934+ pp_output_lines_3ph [loss_params [ 1 ] ] = (pgm_output_lines ["q_from" ][:, 0 ] + pgm_output_lines ["q_to" ][:, 0 ]) * 1e-6
1935+ pp_output_lines_3ph [loss_params [ 2 ] ] = (pgm_output_lines ["p_from" ][:, 1 ] + pgm_output_lines ["p_to" ][:, 1 ]) * 1e-6
1936+ pp_output_lines_3ph [loss_params [ 3 ] ] = (pgm_output_lines ["q_from" ][:, 1 ] + pgm_output_lines ["q_to" ][:, 1 ]) * 1e-6
1937+ pp_output_lines_3ph [loss_params [ 4 ] ] = (pgm_output_lines ["p_from" ][:, 2 ] + pgm_output_lines ["p_to" ][:, 2 ]) * 1e-6
1938+ pp_output_lines_3ph [loss_params [ 5 ] ] = (pgm_output_lines ["q_from" ][:, 2 ] + pgm_output_lines ["q_to" ][:, 2 ]) * 1e-6
19311939 pp_output_lines_3ph ["i_a_from_ka" ] = pgm_output_lines ["i_from" ][:, 0 ] * 1e-3
19321940 pp_output_lines_3ph ["i_b_from_ka" ] = pgm_output_lines ["i_from" ][:, 1 ] * 1e-3
19331941 pp_output_lines_3ph ["i_c_from_ka" ] = pgm_output_lines ["i_from" ][:, 2 ] * 1e-3
@@ -2050,6 +2058,7 @@ def _pp_trafos_output_3ph(self): # pylint: disable=too-many-statements
20502058
20512059 loading = np .maximum (np .maximum (loading_a_percent , loading_b_percent ), loading_c_percent )
20522060
2061+ loss_params = self .get_loss_params_3ph ()
20532062 pp_output_trafos_3ph = pd .DataFrame (
20542063 columns = [
20552064 "p_a_hv_mw" ,
@@ -2064,12 +2073,12 @@ def _pp_trafos_output_3ph(self): # pylint: disable=too-many-statements
20642073 "q_b_lv_mvar" ,
20652074 "p_c_lv_mw" ,
20662075 "q_c_lv_mvar" ,
2067- "pl_a_mw" ,
2068- "ql_a_mvar" ,
2069- "pl_b_mw" ,
2070- "ql_b_mvar" ,
2071- "pl_c_mw" ,
2072- "ql_c_mvar" ,
2076+ loss_params [ 0 ] ,
2077+ loss_params [ 1 ] ,
2078+ loss_params [ 2 ] ,
2079+ loss_params [ 3 ] ,
2080+ loss_params [ 4 ] ,
2081+ loss_params [ 5 ] ,
20732082 "i_a_hv_ka" ,
20742083 "i_a_lv_ka" ,
20752084 "i_b_hv_ka" ,
@@ -2095,22 +2104,22 @@ def _pp_trafos_output_3ph(self): # pylint: disable=too-many-statements
20952104 pp_output_trafos_3ph ["q_b_lv_mvar" ] = pgm_output_transformers ["q_to" ][:, 1 ] * 1e-6
20962105 pp_output_trafos_3ph ["p_c_lv_mw" ] = pgm_output_transformers ["p_to" ][:, 2 ] * 1e-6
20972106 pp_output_trafos_3ph ["q_c_lv_mvar" ] = pgm_output_transformers ["q_to" ][:, 2 ] * 1e-6
2098- pp_output_trafos_3ph ["pl_a_mw" ] = (
2107+ pp_output_trafos_3ph [loss_params [ 0 ] ] = (
20992108 pgm_output_transformers ["p_from" ][:, 0 ] + pgm_output_transformers ["p_to" ][:, 0 ]
21002109 ) * 1e-6
2101- pp_output_trafos_3ph ["ql_a_mvar" ] = (
2110+ pp_output_trafos_3ph [loss_params [ 1 ] ] = (
21022111 pgm_output_transformers ["q_from" ][:, 0 ] + pgm_output_transformers ["q_to" ][:, 0 ]
21032112 ) * 1e-6
2104- pp_output_trafos_3ph ["pl_b_mw" ] = (
2113+ pp_output_trafos_3ph [loss_params [ 2 ] ] = (
21052114 pgm_output_transformers ["p_from" ][:, 1 ] + pgm_output_transformers ["p_to" ][:, 1 ]
21062115 ) * 1e-6
2107- pp_output_trafos_3ph ["ql_b_mvar" ] = (
2116+ pp_output_trafos_3ph [loss_params [ 3 ] ] = (
21082117 pgm_output_transformers ["q_from" ][:, 1 ] + pgm_output_transformers ["q_to" ][:, 1 ]
21092118 ) * 1e-6
2110- pp_output_trafos_3ph ["pl_c_mw" ] = (
2119+ pp_output_trafos_3ph [loss_params [ 4 ] ] = (
21112120 pgm_output_transformers ["p_from" ][:, 2 ] + pgm_output_transformers ["p_to" ][:, 2 ]
21122121 ) * 1e-6
2113- pp_output_trafos_3ph ["ql_c_mvar" ] = (
2122+ pp_output_trafos_3ph [loss_params [ 5 ] ] = (
21142123 pgm_output_transformers ["q_from" ][:, 2 ] + pgm_output_transformers ["q_to" ][:, 2 ]
21152124 ) * 1e-6
21162125 pp_output_trafos_3ph ["i_a_hv_ka" ] = pgm_output_transformers ["i_from" ][:, 0 ] * 1e-3
0 commit comments