def add_test_bus_bus_switch(net): b1, b2, ln = add_grid_connection(net, zone="test_bus_bus_switch") b3 = pp.create_bus(net, vn_kv=20., zone="test_bus_bus_switch") pp.create_switch(net, b2, b3, et="b") pl = 1000 ql = 500 psg = -500 qsg = 100 pz = 1200 qz = 1100 ps = 500 qs = 200 vm_pu = 1.06 r_ohm = 50 x_ohm = 70 pp.create_load(net, b2, p_kw=pl, q_kvar=ql) pp.create_load(net, b3, p_kw=pl, q_kvar=ql, scaling=0.5) pp.create_sgen(net, b2, p_kw=psg, q_kvar=qsg) pp.create_sgen(net, b3, p_kw=psg, q_kvar=qsg, scaling=0.5) pp.create_ward(net, b2, pz_kw=pz, qz_kvar=qz, ps_kw=ps, qs_kvar=qs) pp.create_ward(net, b3, pz_kw=0.5 * pz, qz_kvar=0.5 * qz, ps_kw=0.5 * ps, qs_kvar=0.5 * qs) pp.create_xward(net, b3, pz_kw=0.5 * pz, qz_kvar=0.5 * qz, ps_kw=0.5 * ps, qs_kvar=0.5 * qs, vm_pu=vm_pu, x_ohm=x_ohm, r_ohm=r_ohm) pp.create_xward(net, b2, pz_kw=pz, qz_kvar=qz, ps_kw=ps, qs_kvar=qs, vm_pu=vm_pu, x_ohm=x_ohm, r_ohm=r_ohm) net.last_added_case = "test_bus_bus_switch" return net
def add_test_ward_split(net): # splitting up the wards should not change results pz = 1200 qz = 1100 ps = 500 qs = 200 b1, b2, ln = add_grid_connection(net, zone="test_ward_split") pp.create_ward(net, b2, pz_kw=pz / 2, qz_kvar=qz / 2, ps_kw=ps / 2, qs_kvar=qs / 2) pp.create_ward(net, b2, pz_kw=pz / 2, qz_kvar=qz / 2, ps_kw=ps / 2, qs_kvar=qs / 2) net.last_added_case = "test_ward_split" return net
def add_test_ward(net): b1, b2, ln = add_grid_connection(net, zone="test_ward") pz = 1200 qz = 1100 ps = 500 qs = 200 # one shunt at a bus pp.create_ward(net, b2, pz_kw=pz, qz_kvar=qz, ps_kw=ps, qs_kvar=qs) # add out of service ward shuold not change the result pp.create_ward(net, b2, pz_kw=pz, qz_kvar=qz, ps_kw=ps, qs_kvar=qs, in_service=False, index=pp.get_free_id(net.ward) + 1) net.last_added_case = "test_ward" return net
def add_test_ward_split(net): # splitting up the wards should not change results pz = 1.2 qz = 1.1 ps = 0.5 qs = 0.2 b1, b2, ln = add_grid_connection(net, zone="test_ward_split") pp.create_ward(net, b2, pz_mw=pz / 2, qz_mvar=qz / 2, ps_mw=ps / 2, qs_mvar=qs / 2) pp.create_ward(net, b2, pz_mw=pz / 2, qz_mvar=qz / 2, ps_mw=ps / 2, qs_mvar=qs / 2) net.last_added_case = "test_ward_split" return net
def add_test_oos_bus_with_is_element(net): b1, b2, ln = add_grid_connection(net, zone="test_oos_bus_with_is_element") pl = 1200 ql = 1100 ps = -500 u_set = 1.0 pz = 1200 qz = 1100 qs = 200 vm_pu = 1.06 r_ohm = 50 x_ohm = 70 # OOS buses b3 = pp.create_bus(net, zone="test_oos_bus_with_is_element", vn_kv=0.4, in_service=False) b4 = pp.create_bus(net, zone="test_oos_bus_with_is_element", vn_kv=0.4, in_service=False) b5 = pp.create_bus(net, zone="test_oos_bus_with_is_element", vn_kv=0.4, in_service=False) pp.create_line_from_parameters(net, b2, b3, 12.2, r_ohm_per_km=0.08, x_ohm_per_km=0.12, c_nf_per_km=300, max_i_ka=.2, df=.8) pp.create_line_from_parameters(net, b2, b4, 12.2, r_ohm_per_km=0.08, x_ohm_per_km=0.12, c_nf_per_km=300, max_i_ka=.2, df=.8) pp.create_line_from_parameters(net, b2, b5, 12.2, r_ohm_per_km=0.08, x_ohm_per_km=0.12, c_nf_per_km=300, max_i_ka=.2, df=.8) # in service elements pp.create_load(net, b3, p_kw=pl, q_kvar=ql) pp.create_gen(net, b4, p_kw=ps, vm_pu=u_set) pp.create_sgen(net, b5, p_kw=ps, q_kvar=ql) pp.create_ward(net, b3, pz_kw=pz, qz_kvar=qz, ps_kw=ps, qs_kvar=qs) pp.create_xward(net, b4, pz_kw=0.5 * pz, qz_kvar=0.5 * qz, ps_kw=0.5 * ps, qs_kvar=0.5 * qs, vm_pu=vm_pu, x_ohm=x_ohm, r_ohm=r_ohm) pp.create_shunt(net, b5, q_kvar=-800, p_kw=0) net.last_added_case = "test_oos_bus_with_is_element" return net
def test_continuos_bus_numbering(): net = pp.create_empty_network() bus0 = pp.create_bus(net, 0.4, index=12) pp.create_load(net, bus0, p_mw=0.) pp.create_load(net, bus0, p_mw=0.) pp.create_load(net, bus0, p_mw=0.) pp.create_load(net, bus0, p_mw=0.) bus0 = pp.create_bus(net, 0.4, index=42) pp.create_sgen(net, bus0, p_mw=0.) pp.create_sgen(net, bus0, p_mw=0.) pp.create_sgen(net, bus0, p_mw=0.) bus0 = pp.create_bus(net, 0.4, index=543) pp.create_shunt(net, bus0, 2, 1) pp.create_shunt(net, bus0, 2, 1) pp.create_shunt(net, bus0, 2, 1) bus0 = pp.create_bus(net, 0.4, index=5675) pp.create_ward(net, bus0, 2, 1, 1, 2) pp.create_ward(net, bus0, 2, 1, 1, 2) pp.create_ward(net, bus0, 2, 1, 1, 2) tb.create_continuous_bus_index(net) buses = net.bus.index assert all(buses[i] <= buses[i + 1] for i in range(len(buses) - 1)) # is ordered assert all(buses[i] + 1 == buses[i + 1] for i in range(len(buses) - 1)) # is consecutive assert buses[0] == 0 # starts at zero used_buses = [] for element in net.keys(): try: used_buses.extend(net[element].bus.values) except AttributeError: try: used_buses.extend(net[element].from_bus.values) used_buses.extend(net[element].to_bus.values) except AttributeError: try: used_buses.extend(net[element].hv_bus.values) used_buses.extend(net[element].lv_bus.values) except AttributeError: continue # assert that no buses were used except the ones in net.bus assert set(list(used_buses)) - set(list(net.bus.index.values)) == set()
def test_replace_ward_by_internal_elements(): net = nw.example_simple() pp.create_ward(net, 1, 10, 5, -20, -10, name="ward_1") pp.create_ward(net, 5, 6, 8, 10, 5, name="ward_2") pp.create_ward(net, 6, -1, 9, 11, 6, name="ward_3", in_service=False) pp.runpp(net) net_org = copy.deepcopy(net) pp.replace_ward_by_internal_elements(net) for elm in ["load", "shunt"]: assert net[elm].shape[0] == 4 res_load_created, res_shunt_created = copy.deepcopy(net.res_load), copy.deepcopy(net.res_shunt) pp.runpp(net) assert np.allclose(net_org.res_ext_grid.p_mw, net.res_ext_grid.p_mw) assert np.allclose(net_org.res_ext_grid.q_mvar, net.res_ext_grid.q_mvar) assert np.allclose(res_load_created, net.res_load) assert np.allclose(res_shunt_created, net.res_shunt) net = nw.example_simple() pp.create_ward(net, 1, 10, 5, -20, -10, name="ward_1") pp.create_ward(net, 5, 6, 8, 10, 5, name="ward_2") pp.create_ward(net, 6, -1, 9, 11, 6, name="ward_3", in_service=False) pp.runpp(net) net_org = copy.deepcopy(net) pp.replace_ward_by_internal_elements(net, [1]) for elm in ["load", "shunt"]: assert net[elm].shape[0] == 2 res_load_created, res_shunt_created = copy.deepcopy(net.res_load), copy.deepcopy(net.res_shunt) pp.runpp(net) assert np.allclose(net_org.res_ext_grid.p_mw, net.res_ext_grid.p_mw) assert np.allclose(net_org.res_ext_grid.q_mvar, net.res_ext_grid.q_mvar) assert np.allclose(res_load_created, net.res_load) assert np.allclose(res_shunt_created, net.res_shunt)