From 134b32abea5975dcd9c22dde930ec685a5ab28a0 Mon Sep 17 00:00:00 2001 From: mvogt Date: Thu, 4 Jul 2024 13:29:01 +0200 Subject: [PATCH 1/2] added test for merging of characteristics. --- .../test/toolbox/test_grid_modification.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/pandapower/test/toolbox/test_grid_modification.py b/pandapower/test/toolbox/test_grid_modification.py index 7c5a09255..e5564618f 100644 --- a/pandapower/test/toolbox/test_grid_modification.py +++ b/pandapower/test/toolbox/test_grid_modification.py @@ -190,6 +190,28 @@ def test_merge_with_groups(): assert list(pp.group_element_index(net, 4, "line")) == list(np.array([1, 3], dtype=np.int64) + \ net1.line.shape[0]) +def test_merge_with_characteristics(): + from pandapower.networks.simple_pandapower_test_networks import simple_four_bus_system + from pandapower.control.util.characteristic import Characteristic + + # create two networks + net1 = simple_four_bus_system() + net2 = simple_four_bus_system() + + # create two characteristic + Characteristic(net1, x_values=[0.85, 1.15], y_values=[5, 15]) + Characteristic(net2, x_values=[0.95, 1.05], y_values=[10, 20]) + + # assign the characteristic ids to the trafos + net1.trafo.loc[:, "vk_percent_characteristic"] = 0 + net2.trafo.loc[:, "vk_percent_characteristic"] = 0 + + # merge networks + merged = pp.merge_nets(net1, net2, validate=False) + + # The second transformer should have the second characteristic + assert merged.trafo.loc[1, "vk_percent_characteristic"] == 1 + def test_select_subnet(): # This network has switches of type 'l' and 't' From 029e62fb5050c5b479dd141b1734be225fba8a21 Mon Sep 17 00:00:00 2001 From: mvogt Date: Thu, 4 Jul 2024 14:02:39 +0200 Subject: [PATCH 2/2] added test and fix for merging of characteristic, closes issue #2330 --- pandapower/test/toolbox/test_grid_modification.py | 2 +- pandapower/toolbox/data_modification.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pandapower/test/toolbox/test_grid_modification.py b/pandapower/test/toolbox/test_grid_modification.py index e5564618f..2d8f939f2 100644 --- a/pandapower/test/toolbox/test_grid_modification.py +++ b/pandapower/test/toolbox/test_grid_modification.py @@ -207,7 +207,7 @@ def test_merge_with_characteristics(): net2.trafo.loc[:, "vk_percent_characteristic"] = 0 # merge networks - merged = pp.merge_nets(net1, net2, validate=False) + merged, lookup = pp.merge_nets(net1, net2, validate=False, return_net2_reindex_lookup=True) # The second transformer should have the second characteristic assert merged.trafo.loc[1, "vk_percent_characteristic"] == 1 diff --git a/pandapower/toolbox/data_modification.py b/pandapower/toolbox/data_modification.py index f95a2dcf8..643a9b084 100644 --- a/pandapower/toolbox/data_modification.py +++ b/pandapower/toolbox/data_modification.py @@ -283,6 +283,17 @@ def reindex_elements(net, element_type, new_indices=None, old_indices=None, look reindex_buses(net, lookup) return + if element_type == "characteristic": + for old_id, new_id in lookup.items(): + for ele in ['vk_percent_characteristic', 'vkr_percent_characteristic']: + if ele in net.trafo: + net.trafo.loc[net.trafo[ele] == old_id, ele] = new_id + + for ele in ['vk_hv_percent_characteristic', 'vkr_hv_percent_characteristic', 'vk_mv_percent_characteristic', + 'vkr_mv_percent_characteristic', 'vk_lv_percent_characteristic', 'vkr_lv_percent_characteristic']: + if ele in net.trafo3w: + net.trafo3w.loc[net.trafo3w[ele] == old_id, ele] = new_id + # --- reindex new_index = pd.Series(net[element_type].index, index=net[element_type].index) if element_type != "group":