def test_3ph_isolated_nodes(): v_base = 110 # 110kV Base Voltage mva_base = 100 # 100 MVA net = pp.create_empty_network(sn_mva=mva_base) busn = pp.create_bus(net, vn_kv=v_base, name="busn", index=1) pp.create_bus(net, vn_kv=20., in_service=True, index=2, name="busx") busk = pp.create_bus(net, vn_kv=v_base, name="busk", index=5) busl = pp.create_bus(net, vn_kv=v_base, name="busl", index=6) pp.create_bus(net, vn_kv=20., in_service=False, index=3) busy = pp.create_bus(net, vn_kv=20., in_service=True, index=0, name="busy") pp.create_ext_grid(net, bus=busn, vm_pu=1.0, name="Grid Connection", s_sc_max_mva=5000, rx_max=0.1) net.ext_grid["r0x0_max"] = 0.1 net.ext_grid["x0x_max"] = 1.0 pp.create_std_type(net, {"r0_ohm_per_km": 0.0848, "x0_ohm_per_km": 0.4649556, "c0_nf_per_km": 230.6, "max_i_ka": 0.963, "r_ohm_per_km": 0.0212, "x_ohm_per_km": 0.1162389, "c_nf_per_km": 230}, "example_type") # Loads on supplied buses pp.create_asymmetric_load(net, busk, p_a_mw=50, q_a_mvar=50, p_b_mw=10, q_b_mvar=15, p_c_mw=10, q_c_mvar=5) pp.create_load(net, bus=busl, p_mw=7, q_mvar=0.070, name="Load 1") # Loads on unsupplied buses pp.create_load(net, bus=busy, p_mw=70, q_mvar=70, name="Load Y") pp.create_line(net, from_bus=busn, to_bus=busk, length_km=50.0, std_type="example_type") pp.create_line(net, from_bus=busl, to_bus=busk, length_km=50.0, std_type="example_type") pp.add_zero_impedance_parameters(net) runpp_3ph_with_consistency_checks(net) assert net['converged'] assert np.allclose(net.res_bus_3ph.T[[0, 2, 3]].T[["vm_a_pu", "va_a_degree", "vm_b_pu", "va_b_degree", "vm_c_pu", "va_c_degree"]], np.nan, equal_nan=True) assert np.allclose(net.res_bus_3ph.T[[0, 2, 3]].T[["p_a_mw", "q_a_mvar", "p_b_mw", "q_b_mvar", "p_c_mw", "q_c_mvar"]], 0.0)
def test_2bus_network_singel_oos_bus(net): # -o---x---o b1 = pp.create_bus(net, vn_kv=110) net.bus.loc[5, "in_service"] = False pp.create_line(net, from_bus=5, to_bus=b1, length_km=10.0, std_type="example_type") pp.create_asymmetric_load(net, b1, p_a_mw=-5, q_a_mvar=5, p_b_mw=-1, q_b_mvar=1.5, p_c_mw=-1, q_c_mvar=.5) pp.add_zero_impedance_parameters(net) runpp_3ph_with_consistency_checks(net) assert net['converged']
def test_2bus_network_isolated_net_part(net): # -o---o o---o b1 = pp.create_bus(net, vn_kv=110) b2 = pp.create_bus(net, vn_kv=110) pp.create_line(net, from_bus=b1, to_bus=b2, length_km=50.0, std_type="example_type") pp.create_asymmetric_load(net, b2, p_a_mw=50, q_a_mvar=50, p_b_mw=10, q_b_mvar=15, p_c_mw=10, q_c_mvar=5) pp.add_zero_impedance_parameters(net) runpp_3ph_with_consistency_checks(net) assert net['converged'] check_it(net)
def test_out_serv_load(net): # <-x--o------o pp.add_zero_impedance_parameters(net) runpp_3ph_with_consistency_checks(net) assert net['converged'] check_it(net) pp.create_asymmetric_load(net, 5, p_a_mw=50, q_a_mvar=100, p_b_mw=29, q_b_mvar=38, p_c_mw=10, q_c_mvar=5, in_service=False) runpp_3ph_with_consistency_checks(net) assert net['converged'] check_it(net)
def test_3ph_two_bus_line_powerfactory(): net = pp.create_empty_network() b1 = pp.create_bus(net, vn_kv=0.4) b2 = pp.create_bus(net, vn_kv=0.4) pp.create_ext_grid(net, b1, vm_pu=1.0, s_sc_max_mva=10, rx_max=0.1) net.ext_grid["x0x_max"] = 1. net.ext_grid["r0x0_max"] = 0.1 pp.create_std_type(net, {"r_ohm_per_km": 0.1013, "x_ohm_per_km": 0.06911504, "c_nf_per_km": 690, "g_us_per_km": 0, "max_i_ka": 0.44, "c0_nf_per_km": 312.4, "r0_ohm_per_km": 0.4053, "x0_ohm_per_km": 0.2764602}, "N2XRY 3x185sm 0.6/1kV") pp.create_line(net, b1, b2, 0.4, std_type="N2XRY 3x185sm 0.6/1kV") pp.add_zero_impedance_parameters(net) pp.create_load(net, b2, p_mw=0.010, q_mvar=0.010) pp.create_asymmetric_load(net, b2, p_a_mw=0.020, q_a_mvar=0.010, p_b_mw=0.015, q_b_mvar=0.005, p_c_mw=0.025, q_c_mvar=0.010) runpp_3ph_with_consistency_checks(net) assert net['converged'] bus_pp = np.abs(net.res_bus_3ph[['vm_a_pu', 'vm_b_pu', 'vm_c_pu']].values) bus_pf = np.abs(np.array([[0.99939853552, 1.0013885141, 0.99921580141], [0.97401782343, 0.98945593737, 0.96329605983]])) assert np.max(np.abs(bus_pp-bus_pf)) < 4e-6 line_pp = np.abs(net.res_line_3ph[ ['i_a_from_ka', 'i_b_from_ka', 'i_c_from_ka', 'i_a_to_ka', 'i_b_to_ka', 'i_c_to_ka', 'p_a_from_mw', 'p_b_from_mw', 'p_c_from_mw', 'q_a_from_mvar', 'q_b_from_mvar', 'q_c_from_mvar', 'p_a_to_mw', 'p_b_to_mw', 'p_c_to_mw', 'q_a_to_mvar', 'q_b_to_mvar', 'q_c_to_mvar']].values) line_pf = np.abs(np.array( [[0.11946088987 , 0.08812337783 , 0.14074226065 , 0.1194708224 , 0.088131567331 , 0.14075063601 , 0.023810539354 , 0.01855791658 , 0.029375192747 , 0.013901720672 , 0.008421814704 , 0.013852398586 , -0.023333142958 , -0.018333405987 , -0.028331643666 , -0.013332756527 , -0.008333413919 , -0.013332422725 ]])) assert np.max(np.abs(line_pp - line_pf)) < 1e-5 line_load_pp = np.abs(net.res_line_3ph[ ['loading_a_percent', 'loading_b_percent', 'loading_c_percent', 'loading_percent']].values) line_load_pf = np.abs(np.array( [[27.1525 , 20.0299 , 31.98878 , 31.98878]])) assert np.max(np.abs(line_load_pp - line_load_pf)) < 1e-2
def convert_to_3ph(net): ### update external grid net.ext_grid["r0x0_max"] = 0.1 net.ext_grid["x0x_max"] = 1.0 net.ext_grid["s_sc_max_mva"] = 10000 net.ext_grid["s_sc_min_mva"] = 8000 net.ext_grid["rx_min"] = 0.1 net.ext_grid["rx_max"] = 0.1 ### update transformer net.trafo = net.trafo.head(0) pp.create_std_type(net, {"sn_mva": 0.3, "vn_hv_kv": 20, "vn_lv_kv": 0.4, "vk_percent": 6, "vkr_percent": 0.78125, "pfe_kw": 2.7, "i0_percent": 0.16875, "shift_degree": 0, "vector_group": "YNyn", "tap_side": "hv", "tap_neutral": 0, "tap_min": -2, "tap_max": 2, "tap_step_degree": 0, "tap_step_percent": 2.5, "tap_phase_shifter": False, "vk0_percent": 6, "vkr0_percent": 0.78125, "mag0_percent": 100, "mag0_rx": 0., "si0_hv_partial": 0.9,}, "YNyn", "trafo") pp.create_transformer(net, 0, 1, std_type="YNyn", parallel=1,tap_pos=0, index=pp.get_free_id(net.trafo)) net.trafo.reset_index() ### add zero sequence for lines net.line["r0_ohm_per_km"] = 0.0848 net.line["x0_ohm_per_km"] = 0.4649556 net.line["c0_nf_per_km"] = 230.6 ### convert loads to asymmertric loads for i in net.load.index: row = net.load.loc[i] phases = [0,0,0] p = i % 3 phases[p] = 1 pp.create_asymmetric_load(net, row['bus'], p_a_mw=row['p_mw']*phases[0], q_a_mvar=row['q_mvar']*phases[0], p_b_mw=row['p_mw']*phases[1], q_b_mvar=row['q_mvar']*phases[1], p_c_mw=row['p_mw']*phases[2], q_c_mvar=row['q_mvar']*phases[2], sn_mva=row['sn_mva']) net.load['p_mw'] = 0 net.load['q_mvar'] = 0 pp.add_zero_impedance_parameters(net) return net
def net(): v_base = 110 # 110kV Base Voltage k_va_base = 100 # 100 MVA # I_base = (kVA_base/V_base) * 1e-3 # in kA net = pp.create_empty_network(sn_mva=k_va_base) pp.create_bus(net, vn_kv=v_base, index=1) pp.create_bus(net, vn_kv=v_base, index=5) pp.create_ext_grid(net, bus=1, vm_pu=1.0, s_sc_max_mva=5000, rx_max=0.1, r0x0_max=0.1, x0x_max=1.0) pp.create_std_type(net, {"r0_ohm_per_km": 0.0848, "x0_ohm_per_km": 0.4649556, "c0_nf_per_km": 230.6, "max_i_ka": 0.963, "r_ohm_per_km": 0.0212, "x_ohm_per_km": 0.1162389, "c_nf_per_km": 230}, "example_type") pp.create_line(net, from_bus=1, to_bus=5, length_km=50.0, std_type="example_type") pp.create_asymmetric_load(net, 5, p_a_mw=50, q_a_mvar=50, p_b_mw=10, q_b_mvar=15, p_c_mw=10, q_c_mvar=5) return net
def net(): v_base = 20 # 20kV Base Voltage mva_base = 100 # 100 MVA Net = pp.create_empty_network(sn_mva=mva_base) bus0 = pp.create_bus(Net, vn_kv=v_base, name="Bus 0") pp.create_ext_grid(Net, bus=bus0, vm_pu=1.0, name="Grid Connection", s_sc_max_mva=5000, rx_max=0.1, r0x0_max=0.1, x0x_max=1.0) bus1 = pp.create_bus(Net, name="Bus1", vn_kv=20, type="b") #pp.add_zero_impedance_parameters(Net) pp.create_asymmetric_load(Net, bus1, p_a_mw=0.3, q_a_mvar=0.003, p_b_mw=0.2, q_b_mvar=0.002, p_c_mw=0.1, q_c_mvar=0.001, scaling=1.0, in_service=True, type='wye') pp.create_line_from_parameters(Net, from_bus=bus0, to_bus=bus1, length_km=2.0, r0_ohm_per_km=.789, x0_ohm_per_km=0.306, c0_nf_per_km=272.9, max_i_ka=0.496, r_ohm_per_km=0.184, x_ohm_per_km=0.1900664, c_nf_per_km=273) return Net
def case34_3ph(): """ Create the IEEE 34 bus from IEEE PES Test Feeders: "https://site.ieee.org/pes-testfeeders/resources/”. OUTPUT: **net** - The pandapower format network. """ net = pp.create_empty_network() # Linedata # CF-300 line_data = { 'c_nf_per_km': 3.8250977, 'r_ohm_per_km': 0.69599766, 'x_ohm_per_km': 0.5177677, 'c0_nf_per_km': 1.86976748, 'r0_ohm_per_km': 1.08727498, 'x0_ohm_per_km': 1.47374703, 'max_i_ka': 0.23, 'type': 'ol' } pp.create_std_type(net, line_data, name='CF-300', element='line') # CF-301 line_data = { 'c_nf_per_km': 3.66884364, 'r_ohm_per_km': 1.05015841, 'x_ohm_per_km': 0.52265586, 'c0_nf_per_km': 1.82231544, 'r0_ohm_per_km': 1.48350255, 'x0_ohm_per_km': 1.60203942, 'max_i_ka': 0.18, 'type': 'ol' } pp.create_std_type(net, line_data, name='CF-301', element='line') # CF-302 line_data = { 'c_nf_per_km': 0.8751182, 'r_ohm_per_km': 0.5798427, 'x_ohm_per_km': 0.30768221, 'c0_nf_per_km': 0.8751182, 'r0_ohm_per_km': 0.5798427, 'x0_ohm_per_km': 0.30768221, 'max_i_ka': 0.14, 'type': 'ol' } pp.create_std_type(net, line_data, name='CF-302', element='line') # CF-303 line_data = { 'c_nf_per_km': 0.8751182, 'r_ohm_per_km': 0.5798427, 'x_ohm_per_km': 0.30768221, 'c0_nf_per_km': 0.8751182, 'r0_ohm_per_km': 0.5798427, 'x0_ohm_per_km': 0.30768221, 'max_i_ka': 0.14, 'type': 'ol' } pp.create_std_type(net, line_data, name='CF-303', element='line') # CF-304 line_data = { 'c_nf_per_km': 0.90382554, 'r_ohm_per_km': 0.39802955, 'x_ohm_per_km': 0.29436416, 'c0_nf_per_km': 0.90382554, 'r0_ohm_per_km': 0.39802955, 'x0_ohm_per_km': 0.29436416, 'max_i_ka': 0.18, 'type': 'ol' } pp.create_std_type(net, line_data, name='CF-304', element='line') # Busses bus0 = pp.create_bus(net, name='Bus 0', vn_kv=24.9, type='n', zone='34_BUS') bus_800 = pp.create_bus(net, name='Bus 800', vn_kv=24.9, type='n', zone='34_BUS') bus_802 = pp.create_bus(net, name='Bus 802', vn_kv=24.9, type='n', zone='34_BUS') bus_806 = pp.create_bus(net, name='Bus 806', vn_kv=24.9, type='n', zone='34_BUS') bus_808 = pp.create_bus(net, name='Bus 808', vn_kv=24.9, type='n', zone='34_BUS') bus_810 = pp.create_bus(net, name='Bus 810', vn_kv=24.9, type='n', zone='34_BUS') bus_812 = pp.create_bus(net, name='Bus 812', vn_kv=24.9, type='n', zone='34_BUS') bus_814 = pp.create_bus(net, name='Bus 814', vn_kv=24.9, type='n', zone='34_BUS') bus_850 = pp.create_bus(net, name='Bus 850', vn_kv=24.9, type='n', zone='34_BUS') bus_816 = pp.create_bus(net, name='Bus 816', vn_kv=24.9, type='n', zone='34_BUS') bus_818 = pp.create_bus(net, name='Bus 818', vn_kv=24.9, type='n', zone='34_BUS') bus_820 = pp.create_bus(net, name='Bus 820', vn_kv=24.9, type='n', zone='34_BUS') bus_822 = pp.create_bus(net, name='Bus 822', vn_kv=24.9, type='n', zone='34_BUS') bus_824 = pp.create_bus(net, name='Bus 824', vn_kv=24.9, type='n', zone='34_BUS') bus_826 = pp.create_bus(net, name='Bus 826', vn_kv=24.9, type='n', zone='34_BUS') bus_828 = pp.create_bus(net, name='Bus 828', vn_kv=24.9, type='n', zone='34_BUS') bus_830 = pp.create_bus(net, name='Bus 830', vn_kv=24.9, type='n', zone='34_BUS') bus_854 = pp.create_bus(net, name='Bus 854', vn_kv=24.9, type='n', zone='34_BUS') bus_852 = pp.create_bus(net, name='Bus 852', vn_kv=24.9, type='n', zone='34_BUS') bus_832 = pp.create_bus(net, name='Bus 832', vn_kv=24.9, type='n', zone='34_BUS') bus_858 = pp.create_bus(net, name='Bus 858', vn_kv=24.9, type='n', zone='34_BUS') bus_834 = pp.create_bus(net, name='Bus 834', vn_kv=24.9, type='n', zone='34_BUS') bus_842 = pp.create_bus(net, name='Bus 842', vn_kv=24.9, type='n', zone='34_BUS') bus_844 = pp.create_bus(net, name='Bus 844', vn_kv=24.9, type='n', zone='34_BUS') bus_846 = pp.create_bus(net, name='Bus 846', vn_kv=24.9, type='n', zone='34_BUS') bus_848 = pp.create_bus(net, name='Bus 848', vn_kv=24.9, type='n', zone='34_BUS') bus_860 = pp.create_bus(net, name='Bus 860', vn_kv=24.9, type='n', zone='34_BUS') bus_836 = pp.create_bus(net, name='Bus 836', vn_kv=24.9, type='n', zone='34_BUS') bus_840 = pp.create_bus(net, name='Bus 840', vn_kv=24.9, type='n', zone='34_BUS') bus_862 = pp.create_bus(net, name='Bus 862', vn_kv=24.9, type='n', zone='34_BUS') bus_838 = pp.create_bus(net, name='Bus 838', vn_kv=24.9, type='n', zone='34_BUS') bus_864 = pp.create_bus(net, name='Bus 864', vn_kv=24.9, type='n', zone='34_BUS') bus_888 = pp.create_bus(net, name='Bus 888', vn_kv=4.16, type='n', zone='34_BUS') bus_890 = pp.create_bus(net, name='Bus 890', vn_kv=4.16, type='n', zone='34_BUS') bus_856 = pp.create_bus(net, name='Bus 856', vn_kv=24.9, type='n', zone='34_BUS') # Lines pp.create_line(net, bus_800, bus_802, length_km=0.786384, std_type='CF-300', name='Line 0') pp.create_line(net, bus_802, bus_806, length_km=0.527304, std_type='CF-300', name='Line 1') pp.create_line(net, bus_806, bus_808, length_km=9.823704, std_type='CF-300', name='Line 2') pp.create_line(net, bus_808, bus_810, length_km=1.769059, std_type='CF-303', name='Line 3') pp.create_line(net, bus_808, bus_812, length_km=11.43000, std_type='CF-300', name='Line 4') pp.create_line(net, bus_812, bus_814, length_km=9.061704, std_type='CF-300', name='Line 5') # pp.create_line(net, bus_814, bus_850, length_km=0.003048, std_type='CF-301', # name='Line 6') pp.create_line(net, bus_816, bus_818, length_km=0.521208, std_type='CF-302', name='Line 7') pp.create_line(net, bus_816, bus_824, length_km=3.112008, std_type='CF-301', name='Line 8') pp.create_line(net, bus_818, bus_820, length_km=14.67612, std_type='CF-302', name='Line 9') pp.create_line(net, bus_820, bus_822, length_km=4.187952, std_type='CF-302', name='Line 10') pp.create_line(net, bus_824, bus_826, length_km=0.923544, std_type='CF-303', name='Line 11') pp.create_line(net, bus_824, bus_828, length_km=0.256032, std_type='CF-301', name='Line 12') pp.create_line(net, bus_828, bus_830, length_km=6.230112, std_type='CF-301', name='Line 13') pp.create_line(net, bus_830, bus_854, length_km=0.158496, std_type='CF-301', name='Line 14') pp.create_line(net, bus_832, bus_858, length_km=1.493520, std_type='CF-301', name='Line 15') pp.create_line(net, bus_834, bus_860, length_km=0.615696, std_type='CF-301', name='Line 16') pp.create_line(net, bus_834, bus_842, length_km=0.085344, std_type='CF-301', name='Line 17') pp.create_line(net, bus_836, bus_840, length_km=0.262128, std_type='CF-301', name='Line 18') pp.create_line(net, bus_836, bus_862, length_km=0.085344, std_type='CF-301', name='Line 19') pp.create_line(net, bus_842, bus_844, length_km=0.411480, std_type='CF-301', name='Line 20') pp.create_line(net, bus_844, bus_846, length_km=1.109472, std_type='CF-301', name='Line 21') pp.create_line(net, bus_846, bus_848, length_km=0.161544, std_type='CF-301', name='Line 22') pp.create_line(net, bus_850, bus_816, length_km=0.094488, std_type='CF-301', name='Line 23') # pp.create_line(net, bus_852, bus_832, length_km=0.003048, std_type='CF-301', # name='Line 24') pp.create_line(net, bus_854, bus_856, length_km=7.110984, std_type='CF-303', name='Line 25') pp.create_line(net, bus_854, bus_852, length_km=11.22578, std_type='CF-301', name='Line 26') pp.create_line(net, bus_858, bus_864, length_km=0.493776, std_type='CF-302', name='Line 27') pp.create_line(net, bus_858, bus_834, length_km=1.776984, std_type='CF-301', name='Line 28') pp.create_line(net, bus_860, bus_836, length_km=0.816864, std_type='CF-301', name='Line 29') pp.create_line(net, bus_860, bus_838, length_km=1.481328, std_type='CF-304', name='Line 30') pp.create_line(net, bus_888, bus_890, length_km=3.218688, std_type='CF-300', name='Line 31') # Substation pp.create_transformer_from_parameters(net, bus0, bus_800, sn_mva=2.5, vn_hv_kv=24.9, vn_lv_kv=24.9, vkr_percent=1.0, vk_percent=8.062257, pfe_kw=0.0, i0_percent=0.0, shift_degree=0.0, vkr0_percent=1.0, vk0_percent=8.062257, vector_group='YNyn', mag0_percent=100.0, mag0_rx=0, si0_hv_partial=0.9, tap_side='lv', tap_neutral=0, tap_max=2, tap_min=-2, tap_step_percent=2.5, tap_pos=-2, name='Substation') # Regulator 1 pp.create_transformer_from_parameters(net, bus_814, bus_850, sn_mva=1, vn_hv_kv=24.9, vn_lv_kv=24.9, vkr_percent=0.320088, vk_percent=0.357539, pfe_kw=0.0, i0_percent=0.0, shift_degree=0.0, vkr0_percent=0.452171, vk0_percent=0.665505, vector_group='YNyn', mag0_percent=100.0, mag0_rx=0, si0_hv_partial=0.9, tap_side='lv', tap_neutral=0, tap_max=16, tap_min=-16, tap_step_percent=0.625, tap_pos=0, tap_phase_shifter=False, name='Regulator 1') # Regulator 2 pp.create_transformer_from_parameters(net, bus_852, bus_832, sn_mva=1, vn_hv_kv=24.9, vn_lv_kv=24.9, vkr_percent=0.320088, vk_percent=0.357539, pfe_kw=0.0, i0_percent=0.0, shift_degree=0.0, vkr0_percent=0.452171, vk0_percent=0.665505, vector_group='YNyn', mag0_percent=100.0, mag0_rx=0, si0_hv_partial=0.9, tap_side='lv', tap_neutral=0, tap_max=16, tap_min=-16, tap_step_percent=0.625, tap_pos=0, tap_phase_shifter=False, name='Regulator 2') # Traformer pp.create_transformer_from_parameters(net, bus_832, bus_888, sn_mva=0.5, vn_hv_kv=24.9, vn_lv_kv=4.16, vkr_percent=1.9, vk_percent=4.5, pfe_kw=0.0, i0_percent=0.0, shift_degree=0.0, vkr0_percent=1.9, vk0_percent=4.5, vector_group='YNyn', mag0_percent=100.0, mag0_rx=0, si0_hv_partial=0.9, name='Traformer') # Loads pp.create_asymmetric_load(net, bus_806, p_a_mw=0, p_b_mw=0.03, p_c_mw=0.025, q_a_mvar=0, q_b_mvar=0.015, q_c_mvar=0.014, name='Load 806', type='wye') pp.create_asymmetric_load(net, bus_810, p_a_mw=0, p_b_mw=0.016, p_c_mw=0, q_a_mvar=0, q_b_mvar=0.008, q_c_mvar=0, name='Load 810', type='wye') pp.create_asymmetric_load(net, bus_820, p_a_mw=0.034, p_b_mw=0, p_c_mw=0, q_a_mvar=0.017, q_b_mvar=0, q_c_mvar=0, name='Load 820', type='wye') pp.create_asymmetric_load(net, bus_822, p_a_mw=0.135, p_b_mw=0, p_c_mw=0, q_a_mvar=0.07, q_b_mvar=0, q_c_mvar=0, name='Load 822', type='wye') pp.create_asymmetric_load(net, bus_824, p_a_mw=0, p_b_mw=0.005, p_c_mw=0, q_a_mvar=0, q_b_mvar=0.002, q_c_mvar=0, name='Load 824', type='delta') pp.create_asymmetric_load(net, bus_826, p_a_mw=0, p_b_mw=0.04, p_c_mw=0, q_a_mvar=0, q_b_mvar=0.02, q_c_mvar=0, name='Load 826', type='wye') pp.create_asymmetric_load(net, bus_828, p_a_mw=0, p_b_mw=0, p_c_mw=0.004, q_a_mvar=0, q_b_mvar=0, q_c_mvar=0.002, name='Load 828', type='wye') pp.create_asymmetric_load(net, bus_830, p_a_mw=0.007, p_b_mw=0, p_c_mw=0, q_a_mvar=0.003, q_b_mvar=0, q_c_mvar=0, name='Load 830', type='wye') pp.create_asymmetric_load(net, bus_856, p_a_mw=0, p_b_mw=0.004, p_c_mw=0, q_a_mvar=0, q_b_mvar=0.002, q_c_mvar=0, name='Load 856', type='wye') pp.create_asymmetric_load(net, bus_858, p_a_mw=0.007, p_b_mw=0.002, p_c_mw=0.006, q_a_mvar=0.003, q_b_mvar=0.001, q_c_mvar=0.003, name='Load 858', type='delta') pp.create_asymmetric_load(net, bus_864, p_a_mw=0.002, p_b_mw=0, p_c_mw=0, q_a_mvar=0.001, q_b_mvar=0, q_c_mvar=0, name='Load 864', type='wye') pp.create_asymmetric_load(net, bus_834, p_a_mw=0.004, p_b_mw=0.015, p_c_mw=0.013, q_a_mvar=0.002, q_b_mvar=0.008, q_c_mvar=0.007, name='Load 834', type='delta') pp.create_asymmetric_load(net, bus_860, p_a_mw=0.016, p_b_mw=0.02, p_c_mw=0.11, q_a_mvar=0.008, q_b_mvar=0.01, q_c_mvar=0.055, name='Load 860', type='delta') pp.create_asymmetric_load(net, bus_836, p_a_mw=0.03, p_b_mw=0.01, p_c_mw=0.042, q_a_mvar=0.015, q_b_mvar=0.006, q_c_mvar=0.022, name='Load 836', type='delta') pp.create_asymmetric_load(net, bus_840, p_a_mw=0.018, p_b_mw=0.022, p_c_mw=0, q_a_mvar=0.009, q_b_mvar=0.011, q_c_mvar=0, name='Load 840', type='delta') pp.create_asymmetric_load(net, bus_838, p_a_mw=0, p_b_mw=0.028, p_c_mw=0, q_a_mvar=0, q_b_mvar=0.014, q_c_mvar=0, name='Load 838', type='wye') pp.create_asymmetric_load(net, bus_844, p_a_mw=0.009, p_b_mw=0, p_c_mw=0, q_a_mvar=0.005, q_b_mvar=0, q_c_mvar=0, name='Load 844', type='wye') pp.create_asymmetric_load(net, bus_846, p_a_mw=0, p_b_mw=0.025, p_c_mw=0.012, q_a_mvar=0, q_b_mvar=0.02, q_c_mvar=0.011, name='Load 846', type='wye') pp.create_asymmetric_load(net, bus_848, p_a_mw=0, p_b_mw=0.023, p_c_mw=0, q_a_mvar=0, q_b_mvar=0.011, q_c_mvar=0, name='Load 848', type='wye') pp.create_asymmetric_load(net, bus_860, p_a_mw=0.02, p_b_mw=0.02, p_c_mw=0.02, q_a_mvar=0.016, q_b_mvar=0.016, q_c_mvar=0.016, name='Load 860 spot', type='wye') pp.create_asymmetric_load(net, bus_840, p_a_mw=0.009, p_b_mw=0.009, p_c_mw=0.009, q_a_mvar=0.007, q_b_mvar=0.007, q_c_mvar=0.007, name='Load 840 spot', type='wye') pp.create_asymmetric_load(net, bus_844, p_a_mw=0.135, p_b_mw=0.135, p_c_mw=0.135, q_a_mvar=0.105, q_b_mvar=0.105, q_c_mvar=0.105, name='Load 844 spot', type='wye') pp.create_asymmetric_load(net, bus_848, p_a_mw=0.02, p_b_mw=0.02, p_c_mw=0.02, q_a_mvar=0.016, q_b_mvar=0.016, q_c_mvar=0.016, name='Load 848 spot', type='delta') pp.create_asymmetric_load(net, bus_890, p_a_mw=0.15, p_b_mw=0.15, p_c_mw=0.15, q_a_mvar=0.075, q_b_mvar=0.075, q_c_mvar=0.075, name='Load 890 spot', type='delta') pp.create_asymmetric_load(net, bus_830, p_a_mw=0.01, p_b_mw=0.01, p_c_mw=0.025, q_a_mvar=0.005, q_b_mvar=0.005, q_c_mvar=0.01, name='Load 830 spot', type='delta') # External grid pp.create_ext_grid(net, bus0, vm_pu=1.0, va_degree=0.0, s_sc_max_mva=10.0, s_sc_min_mva=10.0, rx_max=1, rx_min=1, r0x0_max=1, x0x_max=1) # Distributed generators pp.create_sgen(net, bus_848, p_mw=0.66, q_mvar=0.500, name='DG 1', max_p_mw=0.66, min_p_mw=0, max_q_mvar=0.5, min_q_mvar=0) pp.create_sgen(net, bus_890, p_mw=0.50, q_mvar=0.375, name='DG 2', max_p_mw=0.50, min_p_mw=0, max_q_mvar=0.375, min_q_mvar=0) pp.create_sgen(net, bus_822, p_mw=0.2, type='PV', name='PV 1', max_p_mw=0.2, min_p_mw=0, max_q_mvar=0, min_q_mvar=0) pp.create_sgen(net, bus_856, p_mw=0.2, type='PV', name='PV 2', max_p_mw=0.2, min_p_mw=0, max_q_mvar=0, min_q_mvar=0) pp.create_sgen(net, bus_838, p_mw=0.2, type='PV', name='PV 3', max_p_mw=0.2, min_p_mw=0, max_q_mvar=0, min_q_mvar=0) pp.create_sgen(net, bus_822, p_mw=0.3, type='WP', name='WP 1', max_p_mw=0.3, min_p_mw=0, max_q_mvar=0, min_q_mvar=0) pp.create_sgen(net, bus_826, p_mw=0.3, type='WP', name='WP 2', max_p_mw=0.3, min_p_mw=0, max_q_mvar=0, min_q_mvar=0) pp.create_sgen(net, bus_838, p_mw=0.3, type='WP', name='WP 3', max_p_mw=0.3, min_p_mw=0, max_q_mvar=0, min_q_mvar=0) # Shunt capacity bank pp.create_shunt(net, bus_840, q_mvar=-0.12, name='SCB 1', step=4, max_step=4) pp.create_shunt(net, bus_864, q_mvar=-0.12, name='SCB 2', step=4, max_step=4) # storage pp.create_storage(net, bus_810, p_mw=0.2, max_e_mwh=1.0, sn_mva=1.0, soc_percent=50, min_e_mwh=0.2, name='Storage') pp.add_zero_impedance_parameters(net) return net # net = case34_3ph() # pp.pf.runpp_3ph.runpp_3ph(net) # print(net.res_bus_3ph) # print(net.sn_mva)
def create_ardmore_network(): #### Create Network net = pp.create_empty_network() # create bus bus0 = pp.create_bus(net, vn_kv=0.4, name='bus0') # trafo input bus1 = pp.create_bus(net, vn_kv=0.4, name='bus1') # trafo output bus2 = pp.create_bus(net, vn_kv=0.4, name='bus2') # house 2 bus3 = pp.create_bus(net, vn_kv=0.4, name='bus3') # house 3 bus4 = pp.create_bus(net, vn_kv=0.4, name='bus4') # house 4 bus5 = pp.create_bus(net, vn_kv=0.4, name='bus5') # house 5 bus6 = pp.create_bus(net, vn_kv=0.4, name='bus6') # house 1 # create external grid pp.create_ext_grid(net, bus=bus0, vm_pu=1.02, name='Grid Connection') net.ext_grid["r0x0_max"] = 0.1 net.ext_grid["x0x_max"] = 1.0 net.ext_grid["s_sc_max_mva"] = 10000 net.ext_grid["s_sc_min_mva"] = 8000 net.ext_grid["rx_min"] = 0.1 net.ext_grid["rx_max"] = 0.1 # create new standards pp.create_std_type( net, { "sn_mva": 0.3, "vn_hv_kv": 0.4, "vn_lv_kv": 0.4, "vk_percent": 6, "vkr_percent": 0.78125, "pfe_kw": 2.7, "i0_percent": 0.16875, "shift_degree": 0, "vector_group": "YNyn", "tap_side": "hv", "tap_neutral": 0, "tap_min": -2, "tap_max": 2, "tap_step_degree": 0, "tap_step_percent": 2.5, "tap_phase_shifter": False, "vk0_percent": 6, "vkr0_percent": 0.78125, "mag0_percent": 100, "mag0_rx": 0., "si0_hv_partial": 0.9, }, "YNyn", "trafo") # pp.create_std_type(net, # { # "max_i_ka": 313, # "r_ohm_per_km": 0.164, # "x_ohm_per_km": 0.117, # "c_nf_per_km": 406, # "r0_ohm_per_km": 0.1, # "x0_ohm_per_km": 0.4, # "c0_nf_per_km": 230.6, # }, # "NAVY-J 4x185 SE 0.6/1kV", "line") # add trafo to the network trafo = pp.create_transformer(net, hv_bus=bus0, lv_bus=bus1, std_type='YNyn', parallel=1, tap_pos=0) # create lines line_0_2 = pp.create_line(net, from_bus=bus1, to_bus=bus2, length_km=0.250, std_type='NA2XS2Y 1x185 RM/25 6/10 kV') line_2_3 = pp.create_line(net, from_bus=bus2, to_bus=bus3, length_km=0.0001, std_type='NA2XS2Y 1x185 RM/25 6/10 kV') line_3_4 = pp.create_line(net, from_bus=bus3, to_bus=bus4, length_km=0.0001, std_type='NA2XS2Y 1x185 RM/25 6/10 kV') line_4_5 = pp.create_line(net, from_bus=bus4, to_bus=bus5, length_km=0.0001, std_type='NA2XS2Y 1x185 RM/25 6/10 kV') line_5_1 = pp.create_line(net, from_bus=bus5, to_bus=bus6, length_km=0.010, std_type='NA2XS2Y 1x185 RM/25 6/10 kV') net.line["r0_ohm_per_km"] = 0.161 net.line["x0_ohm_per_km"] = 0.11 net.line["c0_nf_per_km"] = 406 # create loads house1 = pp.create_asymmetric_load(net, bus=bus6, sn_mva=0.15, p_A_mw=0.01, q_A_mvar=(0.015**2 - 0.01**2)**0.5, p_B_mw=0, q_B_mvar=0, p_C_mw=0, q_C_mvar=0) house2 = pp.create_asymmetric_load(net, bus=bus2, sn_mva=0.15, p_A_mw=0, q_A_mvar=0, p_B_mw=0.01, q_B_mvar=(0.015**2 - 0.01**2)**0.5, p_C_mw=0, q_C_mvar=0) house3 = pp.create_asymmetric_load(net, bus=bus3, sn_mva=0.15, p_A_mw=0, q_A_mvar=0, p_B_mw=0, q_B_mvar=0, p_C_mw=0.01, q_C_mvar=(0.015**2 - 0.01**2)**0.5) house4 = pp.create_asymmetric_load( net, bus=bus4, sn_mva=0.15, p_A_mw=0, q_A_mvar=0, p_B_mw=0.01, q_B_mvar=(0.015**2 - 0.01**2)**0.5, p_C_mw=0, q_C_mvar=0, ) house5 = pp.create_asymmetric_load( net, bus=bus5, sn_mva=0.15, p_A_mw=0, q_A_mvar=0, p_B_mw=0, q_B_mvar=0, p_C_mw=0.01, q_C_mvar=(0.015**2 - 0.01**2)**0.5, ) pp.add_zero_impedance_parameters(net) return net
def test_4bus_network(): v_base = 110 # 110kV Base Voltage mva_base = 100 # 100 MVA net = pp.create_empty_network(sn_mva=mva_base) # ============================================================================= # Main Program # ============================================================================= busn = pp.create_bus(net, vn_kv=v_base, name="busn") busk = pp.create_bus(net, vn_kv=v_base, name="busk") busm = pp.create_bus(net, vn_kv=v_base, name="busm") busp = pp.create_bus(net, vn_kv=v_base, name="busp") pp.create_ext_grid(net, bus=busn, vm_pu=1.0, name="Grid Connection", s_sc_max_mva=5000, rx_max=0.1, r0x0_max=0.1, x0x_max=1.0) pp.create_std_type( net, { "r0_ohm_per_km": .154, "x0_ohm_per_km": 0.5277876, "c0_nf_per_km": 170.4, "max_i_ka": 0.741, "r_ohm_per_km": .0385, "x_ohm_per_km": 0.1319469, "c_nf_per_km": 170 }, "example_type3") pp.create_line(net, from_bus=busn, to_bus=busm, length_km=1.0, std_type="example_type3") pp.create_line(net, from_bus=busn, to_bus=busp, length_km=1.0, std_type="example_type3") pp.create_line_from_parameters(net, from_bus=busn, to_bus=busk, length_km=1.0, r0_ohm_per_km=.1005, x0_ohm_per_km=0.4900884, c0_nf_per_km=200.5, max_i_ka=0.89, r_ohm_per_km=.0251, x_ohm_per_km=0.1225221, c_nf_per_km=210) pp.create_line_from_parameters(net, from_bus=busk, to_bus=busm, length_km=1.0, r0_ohm_per_km=0.0848, x0_ohm_per_km=0.4649556, c0_nf_per_km=230.6, max_i_ka=0.963, r_ohm_per_km=0.0212, x_ohm_per_km=0.1162389, c_nf_per_km=230) pp.create_line_from_parameters(net, from_bus=busk, to_bus=busp, length_km=1.0, r0_ohm_per_km=.3048, x0_ohm_per_km=0.6031856, c0_nf_per_km=140.3, max_i_ka=0.531, r_ohm_per_km=.0762, x_ohm_per_km=0.1507964, c_nf_per_km=140) pp.add_zero_impedance_parameters(net) pp.create_asymmetric_load(net, busk, p_a_mw=50, q_a_mvar=20, p_b_mw=80, q_b_mvar=60, p_c_mw=20, q_c_mvar=5) pp.create_asymmetric_load(net, busm, p_a_mw=50, q_a_mvar=50, p_b_mw=10, q_b_mvar=15, p_c_mw=10, q_c_mvar=5) pp.create_asymmetric_load(net, busp, p_a_mw=50, q_a_mvar=20, p_b_mw=60, q_b_mvar=20, p_c_mw=10, q_c_mvar=5) runpp_3ph_with_consistency_checks(net) assert net['converged'] bus_pp = np.abs(net.res_bus_3ph[[ 'vm_a_pu', 'vm_b_pu', 'vm_c_pu' ]][~np.isnan(net.res_bus_3ph.vm_a_pu)].values) bus_pf = np.abs( np.array([[0.98085729, 0.97711997, 1.04353786], [0.97828577, 0.97534651, 1.04470864], [0.97774307, 0.97648197, 1.04421233], [0.9780892, 0.97586805, 1.04471106]])) assert np.max(np.abs(bus_pp - bus_pf)) < 1e-8 line_pp = np.abs(net.res_line_3ph[[ 'i_a_from_ka', 'i_b_from_ka', 'i_c_from_ka', 'i_a_to_ka', 'i_b_to_ka', 'i_c_to_ka', 'p_a_from_mw', 'p_b_from_mw', 'p_c_from_mw', 'q_a_from_mvar', 'q_b_from_mvar', 'q_c_from_mvar', 'p_a_to_mw', 'p_b_to_mw', 'p_c_to_mw', 'q_a_to_mvar', 'q_b_to_mvar', 'q_c_to_mvar', 'loading_a_percent', 'loading_b_percent', 'loading_c_percent', 'loading_percent' ]].values) line_pf = np.abs( np.array([[ 0.98898804851, 0.68943734, 0.19848961, 0.99093993, 0.69146384, 0.19966503, 49.87434308, 33.86579548, 12.44659879, 36.16562613, 26.14426519, 4.25746428, -49.75842138, -33.90236497, -12.45155362, -36.19862688, -26.25675246, -4.50384238, 133.730100000000, 93.314960000000, 26.945350000000, 133.730100000000 ], [ 0.87075816277, 1.03463205, 0.19072622, 0.87210779, 1.03599167, 0.19188991, 49.59359423, 58.53676842, 11.97553941, 21.96967200, 26.37559958, 4.04458873, -49.47110289, -58.55284705, -11.98669516, -22.07474008, -26.34476811, -4.29078447, 117.693400000000, 139.809900000000, 25.896070000000, 139.809900000000 ], [ 0.95760407055, 1.14786582, 0.24829126, 0.95975383, 1.15028040, 0.24975553, 50.87938854, 57.53628873, 15.54470531, 31.13888557, 41.99378843, 5.39758513, -50.76249094, -57.56374777, -15.56099267, -31.28560646, -41.99056453, -5.69609575, 107.837500000000, 129.245000000000, 28.062420000000, 129.245000000000 ], [ 0.21780921494, 0.42795803, 0.03706412, 0.22229619, 0.42603286, 0.03771703, 0.23292404, -23.88471674, -2.45255095, 13.53037092, -11.49972060, 0.17971665, -0.24157862, 23.90236497, 2.45155361, -13.80137312, 11.25675247, -0.49615762, 23.083720000000, 44.440090000000, 3.916618000000, 44.440090000000 ], [ 0.03712221482, 0.10766244, 0.03093505, 0.03446871, 0.10500386, 0.03179428, 0.52956690, 1.44846452, -1.98645639, -2.24476446, -6.50971485, 0.51637910, -0.52889712, -1.44715295, 1.98669515, 2.07474008, 6.34476812, -0.70921554, 6.991001000000, 20.275410000000, 5.987624000000, 20.275410000000 ]])) assert np.max(np.abs(line_pp - line_pf)) < 1e-4
max_i_ka=0.421, endtemp_degree=70.0, r0_ohm_per_km=0.7766, x0_ohm_per_km=0.2990796, c0_nf_per_km=496.2, index=pp.get_free_id(net.line) + 1) if case == "bal_wye": # Symmetric Load pp.create_load(net, b3, 0.08, 0.012, type='wye') elif case == "delta_wye": # Unsymmetric Light Load pp.create_asymmetric_load(net, b3, p_a_mw=0.0044, q_a_mvar=0.0013, p_b_mw=0.0044, q_b_mvar=0.0013, p_c_mw=0.0032, q_c_mvar=0.0013, type='wye') pp.create_asymmetric_load(net, b3, p_a_mw=0.0300, q_a_mvar=0.0048, p_b_mw=0.0280, q_b_mvar=0.0036, p_c_mw=0.027, q_c_mvar=0.0043, type='delta') elif case == "wye":