def test_const_pq_gen_trafo_tap(simple_test_net): # allows to use recycle = {"bus_pq", "gen", "trafo"} net = simple_test_net profiles, _ = create_data_source(n_timesteps) profiles['ext_grid'] = np.ones(n_timesteps) + np.arange(0, n_timesteps) * 1e-2 ds = DFData(profiles) # 1load c1 = add_const(net, ds, recycle=None) c2 = add_const(net, ds, recycle=None, profile_name="ext_grid", variable="vm_pu", element_index=0, element="ext_grid") c3 = ContinuousTapControl(net, 0, 1.01, tol=1e-9) vm_pu, ll = _run_recycle(net) del c1, c2, c3 # calculate the same results without recycle c = add_const(net, ds, recycle=False) c2 = add_const(net, ds, recycle=False, profile_name="ext_grid", variable="vm_pu", element_index=0, element="ext_grid") c3 = ContinuousTapControl(net, 0, 1.01, recycle=False, tol=1e-9) ow = _run_normal(net) assert np.allclose(vm_pu, ow.output["res_bus.vm_pu"]) assert np.allclose(ll, ow.output["res_line.loading_percent"])
def test_conflicting_controllers(net): # several controllers for the same element, with different setpoints # this is wrong, ch.run_loadflow must fail in such situation! tol = 1e-6 ContinuousTapControl(net, 0, vm_set_pu=0.98, tol=tol, order=0) ContinuousTapControl(net, 0, vm_set_pu=1.02, tol=tol, order=1) ContinuousTapControl(net, 0, vm_set_pu=1.05, tol=tol, order=2) with pytest.raises(ct.ControllerNotConverged): pp.runpp(net, run_control=True)
def test_trafo_tap(simple_test_net): # allows to use recycle = {"trafo"} but not fast output read net = simple_test_net _, ds = create_data_source(n_timesteps) # 1load c1 = add_const(net, ds, recycle=None) c2 = ContinuousTapControl(net, 0, .99, tol=1e-9) vm_pu, ll = _run_recycle(net) del c1, c2 # calculate the same results without recycle c = add_const(net, ds, recycle=False) c2 = ContinuousTapControl(net, 0, .99, recycle=False, tol=1e-9) ow = _run_normal(net) assert np.allclose(vm_pu, ow.output["res_bus.vm_pu"]) assert np.allclose(ll, ow.output["res_line.loading_percent"])