From eef46d9dad23d4f134bd0968a3adfa0d8761e269 Mon Sep 17 00:00:00 2001 From: Marie Fischer Date: Tue, 23 Jul 2024 16:21:31 +0200 Subject: [PATCH 1/4] net models can be converted in a specific variant and scenario --- .../powerfactory/export_pfd_to_pp.py | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/pandapower/converter/powerfactory/export_pfd_to_pp.py b/pandapower/converter/powerfactory/export_pfd_to_pp.py index 84dc16ad4..60c507430 100644 --- a/pandapower/converter/powerfactory/export_pfd_to_pp.py +++ b/pandapower/converter/powerfactory/export_pfd_to_pp.py @@ -13,7 +13,8 @@ logger = logging.getLogger(__name__) -def from_pfd(app, prj_name: str, path_dst=None, pv_as_slack=False, pf_variable_p_loads='plini', +def from_pfd(app, prj_name: str, variant_name=None, scenario_name=None, path_dst=None, + pv_as_slack=False, pf_variable_p_loads='plini', pf_variable_p_gen='pgini', flag_graphics='GPS', tap_opt='nntap', export_controller=True, handle_us="Deactivate", is_unbalanced=False, create_sections=True): """ @@ -44,6 +45,23 @@ def from_pfd(app, prj_name: str, path_dst=None, pv_as_slack=False, pf_variable_p raise RuntimeError('Project %s could not be found or activated' % prj_name) prj = app.GetActiveProject() + + if (variant_name is not None) and (scenario_name is not None): + variants_folder = app.GetProjectFolder('scheme') + variants = variants_folder.GetContents() + for variant in variants: + if variant.loc_name == variant_name: + break + # found variant and activate it + variant.Activate() + + scenario_name = "Ausbaustufe_test" + scenarios = variant.GetContents() + for scenario in scenarios: + if scenario.loc_name == scenario_name: + break + # found scenario and activate it + scenario.Activate() logger.info('gathering network elements') dict_net = create_network_dict(app, flag_graphics) From 73cd4e86304bf3731fb9ff5bf074115d92b57cde Mon Sep 17 00:00:00 2001 From: Marie Fischer Date: Wed, 24 Jul 2024 13:55:12 +0200 Subject: [PATCH 2/4] small fix, add user warning if variant and scenario are not set correctly --- .../converter/powerfactory/export_pfd_to_pp.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pandapower/converter/powerfactory/export_pfd_to_pp.py b/pandapower/converter/powerfactory/export_pfd_to_pp.py index 60c507430..b7abb8981 100644 --- a/pandapower/converter/powerfactory/export_pfd_to_pp.py +++ b/pandapower/converter/powerfactory/export_pfd_to_pp.py @@ -52,17 +52,25 @@ def from_pfd(app, prj_name: str, variant_name=None, scenario_name=None, path_dst for variant in variants: if variant.loc_name == variant_name: break + else: + raise UserWarning(f"{variant_name} does not exist in PowerFactory.") # found variant and activate it variant.Activate() - scenario_name = "Ausbaustufe_test" scenarios = variant.GetContents() for scenario in scenarios: if scenario.loc_name == scenario_name: break + else: + raise UserWarning(f"{scenario_name} does not exist in PowerFactory.") # found scenario and activate it scenario.Activate() - + elif (variant_name is None) and (scenario_name is not None): + raise UserWarning(f"scenario_name {scenario_name} is chosen but no variant_name.") + elif (variant_name is not None) and (scenario_name is None): + raise UserWarning(f"variant_name {variant_name} is chosen but no scenario_name.") + + logger.info('gathering network elements') dict_net = create_network_dict(app, flag_graphics) pf_load_flow_failed = run_load_flow(app) From e5b0014782a8daab61acc46895b56f8111bc4f2a Mon Sep 17 00:00:00 2001 From: Marie Fischer Date: Thu, 25 Jul 2024 14:38:30 +0200 Subject: [PATCH 3/4] add flag hidden_buses will be included --- pandapower/converter/powerfactory/export_pfd_to_pp.py | 4 ++-- pandapower/converter/powerfactory/pf_export_functions.py | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pandapower/converter/powerfactory/export_pfd_to_pp.py b/pandapower/converter/powerfactory/export_pfd_to_pp.py index b7abb8981..4d5268441 100644 --- a/pandapower/converter/powerfactory/export_pfd_to_pp.py +++ b/pandapower/converter/powerfactory/export_pfd_to_pp.py @@ -13,7 +13,7 @@ logger = logging.getLogger(__name__) -def from_pfd(app, prj_name: str, variant_name=None, scenario_name=None, path_dst=None, +def from_pfd(app, prj_name: str, variant_name=None, scenario_name=None, include_hidden_bus=True, path_dst=None, pv_as_slack=False, pf_variable_p_loads='plini', pf_variable_p_gen='pgini', flag_graphics='GPS', tap_opt='nntap', export_controller=True, handle_us="Deactivate", is_unbalanced=False, create_sections=True): @@ -72,7 +72,7 @@ def from_pfd(app, prj_name: str, variant_name=None, scenario_name=None, path_dst logger.info('gathering network elements') - dict_net = create_network_dict(app, flag_graphics) + dict_net = create_network_dict(app, include_hidden_bus, flag_graphics) pf_load_flow_failed = run_load_flow(app) logger.info('exporting network to pandapower') app.SetAttributeModeInternal(1) diff --git a/pandapower/converter/powerfactory/pf_export_functions.py b/pandapower/converter/powerfactory/pf_export_functions.py index 046c992b4..81c975fb8 100644 --- a/pandapower/converter/powerfactory/pf_export_functions.py +++ b/pandapower/converter/powerfactory/pf_export_functions.py @@ -5,7 +5,7 @@ logger = logging.getLogger(__name__) -def create_network_dict(app, flag_graphics='GPS'): +def create_network_dict(app, include_hidden_bus, flag_graphics='GPS'): # elements to be exported from PowerFactory set_object_extentions = { # node elements: @@ -76,8 +76,10 @@ def create_network_dict(app, flag_graphics='GPS'): logger.info('collecting network elements') for obj in set_object_extentions: - if obj == 'ElmTerm': + if (obj == 'ElmTerm') and (include_hidden_bus==True): dict_net[obj] = app.GetCalcRelevantObjects(obj, 1, 0, 1) + elif (obj == 'ElmTerm') and (include_hidden_bus==False): + dict_net[obj] = app.GetCalcRelevantObjects(obj) # default: 1,0,0 else: dict_net[obj] = app.GetCalcRelevantObjects(obj) From 997ec393a0100159f9d2447352fc89aac4e654fa Mon Sep 17 00:00:00 2001 From: Marie Fischer Date: Tue, 30 Jul 2024 14:29:40 +0200 Subject: [PATCH 4/4] changelog ;) --- CHANGELOG.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 29d01d8bc..9a641ba18 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,6 +3,7 @@ Change Log [upcoming release] - 2024-..-.. ------------------------------- +- [ADDED] pf2pp: possibility to convert a specific varaint and scenario - [ADDED] low voltage grid Schutterwald - [FIXED] trafo3w with tap changer at star point corrected - [FIXED] namespace changes from numpy 2.0 release