def test_store_and_load(simple_test_net): net = simple_test_net n_timesteps = 2 profiles, ds = create_data_source(n_timesteps) ConstControl(net, element='load', variable='p_mw', element_index=[0, 1, 2], data_source=ds, profile_name=["load1", "load2_mv_p", "load3_hv_p"]) dirname = tempfile.gettempdir() ow = OutputWriter(net, output_path=dirname, output_file_type=".json") ow.remove_log_variable("res_bus") tmp_file = os.path.join(dirname, "net.json") pp.to_json(net, tmp_file) del net del ow res_line_file = os.path.join(dirname, "res_line", "loading_percent.json") # del result file is one is present if os.path.isfile(res_line_file): os.remove(res_line_file) net = pp.from_json(tmp_file) ow = net.output_writer.iat[0, 0] assert len(ow.log_variables) == 1 assert ow.output_path == dirname time_steps = range(0, n_timesteps) run_timeseries(net, time_steps=time_steps, verbose=False) # check if results were written assert os.path.isfile(res_line_file)
def test_output_writer_multiple_index_definition(simple_test_net): net = simple_test_net n_timesteps = 1 profiles, ds = create_data_source(n_timesteps) ConstControl(net, element='load', variable='p_mw', element_index=[0, 1, 2], data_source=ds, profile_name=["load1", "load2_mv_p", "load3_hv_p"]) time_steps = range(0, n_timesteps) ow = OutputWriter(net, time_steps, output_path=tempfile.gettempdir(), output_file_type=".json") ow.log_variable('res_bus', 'vm_pu', net.load.bus[[0, 1]]) ow.log_variable('res_bus', 'vm_pu', index=[1, 2]) ow.log_variable('res_bus', 'vm_pu', index=[3, 2, 1]) ow.log_variable('res_bus', 'vm_pu', net.load.bus) ow.log_variable('res_bus', 'vm_pu', index=[3, 4]) ow.log_variable('res_bus', 'vm_pu', net.bus.index) ow.log_variable('res_bus', 'vm_pu', 0) run_timeseries(net, time_steps) backup_result = copy.deepcopy( ow.output["res_bus.vm_pu"].loc[:, net.bus.index]) del ow ow = OutputWriter(net, time_steps, output_path=tempfile.gettempdir(), output_file_type=".json") ow.log_variable('res_bus', 'vm_pu', net.bus.index) # run_timeseries(net, time_steps) run_timeseries(net, time_steps) # assert all are considered assert len(ow.output["res_bus.vm_pu"].columns) == len(net.bus.index) # assert correct order of values assert np.allclose(backup_result, ow.output["res_bus.vm_pu"].loc[:, net.bus.index])
def test_output_writer_eval_simple(simple_test_net): net = simple_test_net n_timesteps = 1 profiles, ds = create_data_source(n_timesteps) # 1load ConstControl(net, element='load', variable='p_mw', element_index=[0, 1, 2], data_source=ds, profile_name=["load1", "load2_mv_p", "load3_hv_p"]) time_steps = range(0, n_timesteps) ow = OutputWriter(net, time_steps, output_path=tempfile.gettempdir(), output_file_type=".json") ow.log_variable('res_bus', 'vm_pu', eval_function=max, eval_name="max") run_timeseries(net, time_steps, verbose=False) assert len(ow.output["res_bus.vm_pu"]["max"]) == n_timesteps
def test_default_output_writer(simple_test_net): net = simple_test_net n_timesteps = 5 profiles, ds = create_data_source(n_timesteps) ConstControl(net, element='load', variable='p_mw', element_index=[0, 1, 2], data_source=ds, profile_name=["load1", "load2_mv_p", "load3_hv_p"]) time_steps = range(0, n_timesteps) run_timeseries(net, time_steps, verbose=False) ow = net.output_writer.iloc[0, 0] loading_percent = ow.output["res_line.loading_percent"] vm_pu = ow.output["res_bus.vm_pu"] assert loading_percent.shape[0] == n_timesteps and loading_percent.shape[ 1] == len(net.line) assert vm_pu.shape[0] == n_timesteps and vm_pu.shape[1] == len(net.bus)
def test_output_writer_without_timesteps_set(simple_test_net): net = simple_test_net n_timesteps = 5 profiles, ds = create_data_source(n_timesteps) # 1load ConstControl(net, element='load', variable='p_mw', element_index=[0, 1, 2], data_source=ds, profile_name=["load1", "load2_mv_p", "load3_hv_p"]) time_steps = range(0, n_timesteps) ow = OutputWriter(net, output_path=tempfile.gettempdir(), output_file_type=".json") ow.log_variable('res_bus', 'vm_pu') ow.log_variable('res_line', 'i_ka') run_timeseries(net, time_steps) assert len(ow.output["res_bus.vm_pu"]) == n_timesteps assert len(ow.output["res_line.i_ka"]) == n_timesteps
def test_ppc_log(simple_test_net): net = simple_test_net n_timesteps = 5 profiles, ds = create_data_source(n_timesteps) # 1load ConstControl(net, element='load', variable='p_mw', element_index=[0, 1, 2], data_source=ds, profile_name=["load1", "load2_mv_p", "load3_hv_p"], recycle=True) time_steps = range(0, n_timesteps) ow = OutputWriter(net, output_path=tempfile.gettempdir(), output_file_type=".json", log_variables=list()) ow.log_variable('ppc_bus', 'vm') ow.log_variable('ppc_bus', 'va') pp.runpp(net, only_v_results=True, recycle={ "bus_pq": True, "gen": False, "trafo": False }) run_timeseries(net, time_steps, recycle={ "bus_pq": True, "gen": False, "trafo": False }, only_v_results=True, verbose=False) assert len(ow.output["ppc_bus.vm"]) == n_timesteps assert len(ow.output["ppc_bus.va"]) == n_timesteps
def test_output_writer_short_data_source(simple_test_net): net = simple_test_net # outputwriter should fail if data source is shorter than time steps n_timesteps = 10 profiles, ds = create_data_source(5) # 1load ConstControl(net, element='load', variable='p_mw', element_index=[0, 1, 2], data_source=ds, profile_name=["load1", "load2_mv_p", "load3_hv_p"]) time_steps = range(0, n_timesteps) ow = OutputWriter(net, output_path=tempfile.gettempdir(), output_file_type=".json") ow.log_variable('res_bus', 'vm_pu') ow.log_variable('res_line', 'i_ka') with pytest.raises(KeyError): run_timeseries(net, time_steps, verbose=False)
def test_output_writer_without_timesteps_set_repeat(simple_test_net): net = simple_test_net # the same outputwriter should be able to run repeated time series time_steps_to_check = [8, 5, 10] profiles, ds = create_data_source(max(time_steps_to_check)) # 1load ConstControl(net, element='load', variable='p_mw', element_index=[0, 1, 2], data_source=ds, profile_name=["load1", "load2_mv_p", "load3_hv_p"]) ow = OutputWriter(net, output_path=tempfile.gettempdir(), output_file_type=".json") ow.log_variable('res_bus', 'vm_pu') ow.log_variable('res_line', 'i_ka') for n_timesteps in time_steps_to_check: time_steps = range(0, n_timesteps) run_timeseries(net, time_steps, verbose=False) assert len(ow.output["res_bus.vm_pu"].index) == n_timesteps