def test_four_loads_with_branches_out(): pd_net = pn.four_loads_with_branches_out() assert len(pd_net.bus) == 10 assert len(pd_net.ext_grid) == 1 assert len(pd_net.trafo) == 1 assert len(pd_net.line) == 8 assert len(pd_net.load) == 4 pp.runpp(pd_net) assert pd_net.converged
def test_line_temperature(): net = four_loads_with_branches_out() r_init = net.line.r_ohm_per_km.values.copy() # r_ohm_per_km is not in line results by default pp.runpp(net) v_init = net.res_bus.vm_pu.values.copy() va_init = net.res_bus.va_degree.values.copy() assert "r_ohm_per_km" not in net.res_line.columns # no temperature adjustment performed if not explicitly set in options/arguments to runpp net.line["temperature_degree_celsius"] = 20 pp.runpp(net) assert "r_ohm_per_km" not in net.res_line.columns assert np.allclose(net.res_bus.vm_pu, v_init, rtol=0, atol=1e-16) assert np.allclose(net.res_bus.va_degree, va_init, rtol=0, atol=1e-16) # argument in runpp is considered pp.runpp(net, consider_line_temperature=True) assert "r_ohm_per_km" in net.res_line.columns assert np.allclose(net.res_line.r_ohm_per_km, r_init, rtol=0, atol=1e-16) assert np.allclose(net.res_bus.vm_pu, v_init, rtol=0, atol=1e-16) assert np.allclose(net.res_bus.va_degree, va_init, rtol=0, atol=1e-16) # check results of r adjustment, check that user_pf_options works, alpha is 4e-3 by default t = np.arange(0, 80, 10) net.line.temperature_degree_celsius = t pp.set_user_pf_options(net, consider_line_temperature=True) pp.runpp(net) alpha = 4e-3 r_temp = r_init * (1 + alpha * (t - 20)) assert np.allclose(net.res_line.r_ohm_per_km, r_temp, rtol=0, atol=1e-16) assert not np.allclose(net.res_bus.vm_pu, v_init, rtol=0, atol=1e-4) assert not np.allclose(net.res_bus.va_degree, va_init, rtol=0, atol=1e-2) # check reults with user-defined alpha alpha = np.arange(3e-3, 5e-3, 2.5e-4) net.line['alpha'] = alpha pp.runpp(net) r_temp = r_init * (1 + alpha * (t - 20)) assert np.allclose(net.res_line.r_ohm_per_km, r_temp, rtol=0, atol=1e-16) assert not np.allclose(net.res_bus.vm_pu, v_init, rtol=0, atol=1e-4) assert not np.allclose(net.res_bus.va_degree, va_init, rtol=0, atol=1e-2) # not anymore in net if not considered pp.set_user_pf_options(net, overwrite=True) pp.runpp(net) assert np.allclose(net.res_bus.vm_pu, v_init, rtol=0, atol=1e-16) assert np.allclose(net.res_bus.va_degree, va_init, rtol=0, atol=1e-16) assert "r_ohm_per_km" not in net.res_line.columns
def test_zip_loads_pf_algorithms(): net = four_loads_with_branches_out() net.load['const_i_percent'] = 40 net.load['const_z_percent'] = 40 alg_to_test = ['bfsw'] for alg in alg_to_test: pp.runpp(net, algorithm='nr') vm_nr = net.res_bus.vm_pu va_nr = net.res_bus.va_degree pp.runpp(net, algorithm=alg) vm_alg = net.res_bus.vm_pu va_alg = net.res_bus.va_degree assert np.allclose(vm_nr, vm_alg) assert np.allclose(va_nr, va_alg)
def test_pf_algorithms(): alg_to_test = ['bfsw', 'fdbx', 'fdxb', 'gs'] for alg in alg_to_test: net = create_cigre_network_mv(with_der=False) pp.runpp(net, algorithm='nr') vm_nr = net.res_bus.vm_pu va_nr = net.res_bus.va_degree pp.runpp(net, algorithm=alg) vm_alg = net.res_bus.vm_pu va_alg = net.res_bus.va_degree assert np.allclose(vm_nr, vm_alg) assert np.allclose(va_nr, va_alg) # testing with a network which contains DERs net = create_cigre_network_mv() pp.runpp(net) vm_nr = net.res_bus.vm_pu va_nr = net.res_bus.va_degree pp.runpp(net, algorithm=alg) vm_alg = net.res_bus.vm_pu va_alg = net.res_bus.va_degree assert np.allclose(vm_nr, vm_alg) assert np.allclose(va_nr, va_alg) # testing a weakly meshed network and consideration of phase-shifting transformer using calculate_voltage_angles net = four_loads_with_branches_out() # adding a line in order to create a loop pp.create_line(net, from_bus=8, to_bus=9, length_km=0.05, name='line9', std_type='NAYY 4x120 SE') pp.runpp(net, calculate_voltage_angles=True) vm_nr = net.res_bus.vm_pu va_nr = net.res_bus.va_degree pp.runpp(net, algorithm=alg, calculate_voltage_angles=True) vm_alg = net.res_bus.vm_pu va_alg = net.res_bus.va_degree assert np.allclose(vm_nr, vm_alg) assert np.allclose(va_nr, va_alg) # testing a network with PV buses net = example_simple() pp.runpp(net) vm_nr = net.res_bus.vm_pu va_nr = net.res_bus.va_degree pp.runpp(net, algorithm='bfsw') vm_alg = net.res_bus.vm_pu va_alg = net.res_bus.va_degree assert np.allclose(vm_nr, vm_alg) assert np.allclose(va_nr, va_alg)
def test_zip_loads_consistency(): net = four_loads_with_branches_out() net.load['const_i_percent'] = 40 net.load['const_z_percent'] = 40 assert runpp_with_consistency_checks(net)
def test_init_results_without_results(): # should switch to "auto" mode and not fail net = four_loads_with_branches_out() pp.reset_results(net) pp.runpp(net, init="results")