def test_drop_elements_at_buses(): net = pp.create_empty_network() bus0 = pp.create_bus(net, vn_kv=110) bus1 = pp.create_bus(net, vn_kv=20) bus2 = pp.create_bus(net, vn_kv=10) bus3 = pp.create_bus(net, vn_kv=0.4) bus4 = pp.create_bus(net, vn_kv=0.4) bus5 = pp.create_bus(net, vn_kv=20) trafo0 = pp.create_transformer3w(net, hv_bus=bus0, mv_bus=bus1, lv_bus=bus2, name='trafo0', std_type='63/25/38 MVA 110/20/10 kV') trafo1 = pp.create_transformer(net, hv_bus=bus2, lv_bus=bus3, std_type='0.4 MVA 10/0.4 kV') line1 = pp.create_line(net, from_bus=bus3, to_bus=bus4, length_km=20.1, std_type='24-AL1/4-ST1A 0.4', name='line1') #switch0=pp.create_switch(net, bus = bus0, element = trafo0, et = 't3') #~~~~~ not implementable now switch1 = pp.create_switch(net, bus=bus1, element=bus5, et='b') switch2 = pp.create_switch(net, bus=bus2, element=trafo1, et='t') switch3 = pp.create_switch(net, bus=bus3, element=line1, et='l') # bus id needs to be entered as iterable, not done in the function tb.drop_elements_at_buses(net, [bus5]) assert len( net.switch ) == 2 # it should be 2 since switch is connected to bus5 but if we add "element" column for switch it would delete this assert len(net.trafo) == 1 assert len(net.trafo3w) == 1 assert len(net.line) == 1 tb.drop_elements_at_buses(net, [bus4]) assert len(net.switch) == 1 assert len(net.line) == 0 assert len(net.trafo) == 1 assert len(net.trafo3w) == 1 tb.drop_elements_at_buses(net, [bus3]) assert len(net.switch) == 0 assert len(net.line) == 0 assert len(net.trafo) == 0 assert len(net.trafo3w) == 1 tb.drop_elements_at_buses(net, [bus2]) assert len(net.switch) == 0 assert len(net.line) == 0 assert len(net.trafo) == 0 assert len(net.trafo3w) == 0 tb.drop_elements_at_buses(net, [bus1]) assert len(net.switch) == 0 assert len(net.line) == 0 assert len(net.trafo) == 0 assert len(net.trafo3w) == 0
def test_drop_elements_at_buses(): net = pp.create_empty_network() bus0 = pp.create_bus(net, vn_kv=110) bus1 = pp.create_bus(net, vn_kv=20) bus2 = pp.create_bus(net, vn_kv=10) bus3 = pp.create_bus(net, vn_kv=0.4) bus4 = pp.create_bus(net, vn_kv=0.4) bus5 = pp.create_bus(net, vn_kv=20) pp.create_ext_grid(net, 0) trafo0 = pp.create_transformer3w(net, hv_bus=bus0, mv_bus=bus1, lv_bus=bus2, name='trafo0', std_type='63/25/38 MVA 110/20/10 kV') trafo1 = pp.create_transformer(net, hv_bus=bus2, lv_bus=bus3, std_type='0.4 MVA 10/0.4 kV') line1 = pp.create_line(net, from_bus=bus3, to_bus=bus4, length_km=20.1, std_type='24-AL1/4-ST1A 0.4', name='line1') pp.create_sgen(net, 1, 0) switch0a = pp.create_switch(net, bus=bus0, element=trafo0, et='t3') switch0b = pp.create_switch(net, bus=bus1, element=trafo0, et='t3') switch0c = pp.create_switch(net, bus=bus2, element=trafo0, et='t3') switch1 = pp.create_switch(net, bus=bus1, element=bus5, et='b') switch2a = pp.create_switch(net, bus=bus2, element=trafo1, et='t') switch2b = pp.create_switch(net, bus=bus3, element=trafo1, et='t') switch3a = pp.create_switch(net, bus=bus3, element=line1, et='l') switch3b = pp.create_switch(net, bus=bus4, element=line1, et='l') # bus id needs to be entered as iterable, not done in the function for b in net.bus.index.values: net1 = net.deepcopy() cd = tb.get_connected_elements_dict(net1, b, connected_buses=False) swt3w = set(net1.switch.loc[net1.switch.element.isin(cd.get('trafo3w', [1000])) & (net1.switch.et=='t3')].index) swt = set(net1.switch.loc[net1.switch.element.isin(cd.get('trafo', [1000])) & (net1.switch.et=='t')].index) swl = set(net1.switch.loc[net1.switch.element.isin(cd.get('line', [1000])) & (net1.switch.et=='l')].index) sw = swt3w | swt | swl tb.drop_elements_at_buses(net1, [b]) assert b not in net1.switch.bus.values assert b not in net1.switch.query("et=='b'").element.values assert sw.isdisjoint(set(net1.switch.index)) for elm, id in cd.items(): assert len(net1[elm].loc[net1[elm].index.isin(id)]) == 0