SimBench Profiles

Within the dataset SimBench provides a large number of full year load, generation and storage profiles.

The profiles are already included in the pandapower nets received by the function:

net = simbench.get_simbench_net(sb_code_info)
net.profiles

If you are not interested in the SimBench grids, you can get the profiles easily using this function:

simbench.get_all_simbench_profiles(scenario, input_path=None, sep=';')

Returns a dict of DataFrames with all simbench profiles of the given scenario. These include all profiles with the net data received by get_simbench_net(“1-complete_data-mixed-all-%s-sw” % str(scenario)).

INPUT:

scenario (int) - defines to which scenario the requested profiles belong to. Should be within [0, 1, 2].

OPTIONAL:

input_path (path) - option to change the path to all simbench grid csv files. However, a change should not be necessary.

sep (str, “;”) - seperator of the csv files which contain the profiles information.

OUTPUT:

profiles (dict) - dict of DataFrames with all simbench profiles of the given scenario

Several other functions are provided for advanced use, such as:

simbench.get_applied_profiles(net, profile_type)

Returns a list of unique profiles in element tables, e.g. net.sgen.profile. profile_type must be in [“load”, “renewables”, “powerplants”, “storage”].

simbench.get_available_profiles(net, profile_type, p_or_q=None, continue_on_missing=False)

Returns a list of unique profiles in net.profiles. profile_type in [“load”, “renewables”, “powerplants”, “storage”] p_or_q can be None, “p”, or “q”

simbench.get_missing_profiles(net, profile_type, p_or_q=None)

Returns a set of profiles which miss in net.profiles compared to the profile column of the element table.

simbench.profiles_are_missing(net, return_as_bool=True)

Checks whether any of the used profiles (requested in net[elm].profile) misses in net.profiles.

simbench.get_absolute_profiles_from_relative_profiles(net, element, multiplying_column, relative_profiles=None, profile_column='profile', profile_suffix=None, time_as_index=False, **kwargs)

Returns a DataFrame with profiles for the given element (e.g. loads or sgens). The profiles values are calculated by multiplying the relative profiles given by relative_profiles (or if not given, from net[“profiles”]) with the values in net[element][multiplying_column].

INPUT:

net (pandapowerNet) - pandapower net

element (str) - element type for which absolute profiles are calculated. Possible are “load”, “gen”, “sgen” or “storage”.

multiplying_column (str) - column name within net[element].columns which should be multiplied with the relative profiles. Usual multiply_columns are ‘p_mw’ or ‘q_mvar’. Additional Feature: If multiplying_column is not a string, the relative profiles are not multiplied with net[element][multiplying_column] but with ‘multiplying_column’ itself.

OPTIONAL:

relative_profiles (DataFrame, None) - DataFrame of relative profiles as input. If None, net[“profiles”] is considered.

profile_column (str, “profile”) - Name of the column which contains information about which element is assigned to which profile. In SimBench grids, this information is given in the column “profile”. For that reason, ‘profile’ is the default.

profile_suffix (str, None) - For the case that different profiles are given for p and q, these can be distinguished by a suffix. For loads this can be “_pload” and “_qload”, which will be automatically assumed, if profile_suffix is None.

time_as_index (bool, False) - If True, the returned DataFrame has relative_profiles[“time”] as index. If False, relative_profiles.index is used.

**kwargs - key word arguments for merge_dataframes()

OUTPUT:

output_profiles (DataFrame) - calculated absolute profiles

simbench.get_absolute_values(net, profiles_instead_of_study_cases, **kwargs)

Is a convenience function using get_absolute_profiles_from_relative_profiles(). This function returns a dict with all absolute values, calculated from scaling factors and maximum active or reactive powers.

INPUT:

net (pandapowerNet) - pandapower net

profiles_instead_of_study_cases (bool) - Flag to decide whether profiles or loadcases should be considered.

**kwargs - key word arguments for get_absolute_profiles_from_relative_profiles() (especially for merge_dataframes())

OUTPUT:

abs_val (dict) - absolute values calculated from relative scaling factors and maximum active or reactive powers. The keys of this dict are tuples consisting of element and column or of strings consisting of the same but splitted by ‘.’. The values are DataFrames with absolute power values.

simbench.apply_const_controllers(net, absolute_profiles_values, exclude_elms_dict=None)

Applys ConstControl instances to the net. As a result, one can easily run timeseries with given power values of e.g. loads, sgens, storages or gens.

INPUT:

net - pandapower net

absolute_profiles_values - dict of Dataframes with absolute values for the profiles, keys should be tuples of length 2 (element and parameter), DataFrame size is timesteps x number of elements

OPTIONAL:

exclude_elms_dict (dict, None) - elements which should not get ConstControllers. The keys should be the element type, such as “sgen”, and the values should be the indices.