power-grid-model-io 1.3.13__tar.gz → 1.3.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of power-grid-model-io might be problematic. Click here for more details.
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/PKG-INFO +1 -1
- power_grid_model_io-1.3.14/PYPI_VERSION +1 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/converters/pandapower_converter.py +48 -41
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io.egg-info/PKG-INFO +1 -1
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io.egg-info/SOURCES.txt +2 -0
- power_grid_model_io-1.3.14/tests/data/pandapower/pp_v2_net_3ph_output_current_loading.json +3161 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pp_v2_net_output.json +1 -1
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pp_validation.py +47 -2
- power_grid_model_io-1.3.14/tests/data/zip/foo.zip.license +3 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_pandapower_converter_input.py +205 -187
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_pandapower_converter_output.py +5 -2
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/converters/test_pandapower_converter_input.py +61 -27
- power_grid_model_io-1.3.14/tests/validation/converters/test_pandapower_converter_output.py +280 -0
- power_grid_model_io-1.3.13/PYPI_VERSION +0 -1
- power_grid_model_io-1.3.13/tests/validation/converters/test_pandapower_converter_output.py +0 -180
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/LICENSE +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/MANIFEST.in +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/README.md +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/VERSION +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/pyproject.toml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/setup.cfg +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/setup.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/config/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/config/examples/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/config/examples/multipliers.yaml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/config/excel/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/config/excel/vision_en.yaml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/config/excel/vision_en_9_7.yaml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/config/excel/vision_en_9_8.yaml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/config/excel/vision_nl.yaml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/converters/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/converters/base_converter.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/converters/pgm_json_converter.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/converters/tabular_converter.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/converters/vision_excel_converter.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/data_stores/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/data_stores/base_data_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/data_stores/csv_dir_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/data_stores/excel_file_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/data_stores/json_file_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/data_stores/vision_excel_file_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/data_types/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/data_types/_data_types.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/data_types/tabular_data.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/functions/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/functions/_functions.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/functions/filters.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/functions/phase_to_phase.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/mappings/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/mappings/field_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/mappings/multiplier_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/mappings/tabular_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/mappings/unit_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/mappings/value_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/py.typed +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/auto_id.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/dict.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/download.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/excel_ambiguity_checker.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/json.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/modules.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/parsing.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/uuid_excel_cvtr.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/zip.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io.egg-info/dependency_links.txt +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io.egg-info/requires.txt +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io.egg-info/top_level.txt +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/conftest.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/config/dummy_mapping.yaml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/config/mapping.yaml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_asym_output_data.json +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_asym_output_data.json.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_input_data.json +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_input_data.json.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_output_data.json +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_output_data.json.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pp_v2_net_3ph_output.json +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pp_v2_net_3ph_output.json.license +0 -0
- /power_grid_model_io-1.3.13/tests/data/pandapower/pp_v2_net_output.json.license → /power_grid_model_io-1.3.14/tests/data/pandapower/pp_v2_net_3ph_output_current_loading.json.license +0 -0
- /power_grid_model_io-1.3.13/tests/data/vision/excel_ambiguity_check_data.xlsx.license → /power_grid_model_io-1.3.14/tests/data/pandapower/pp_v2_net_output.json.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/excel_ambiguity_check_data.xlsx +0 -0
- /power_grid_model_io-1.3.13/tests/data/vision/pgm_input_data_en.json.license → /power_grid_model_io-1.3.14/tests/data/vision/excel_ambiguity_check_data.xlsx.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/pgm_input_data_en.json +0 -0
- /power_grid_model_io-1.3.13/tests/data/vision/pgm_input_data_nl.json.license → /power_grid_model_io-1.3.14/tests/data/vision/pgm_input_data_en.json.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/pgm_input_data_nl.json +0 -0
- /power_grid_model_io-1.3.13/tests/data/vision/vision_en.xlsx.license → /power_grid_model_io-1.3.14/tests/data/vision/pgm_input_data_nl.json.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_9_5_en.yaml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_9_5_nl.yaml +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_en.xlsx +0 -0
- /power_grid_model_io-1.3.13/tests/data/vision/vision_en_9_7.xlsx.license → /power_grid_model_io-1.3.14/tests/data/vision/vision_en.xlsx.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_en_9_7.xlsx +0 -0
- /power_grid_model_io-1.3.13/tests/data/vision/vision_nl.xlsx.license → /power_grid_model_io-1.3.14/tests/data/vision/vision_en_9_7.xlsx.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_nl.xlsx +0 -0
- /power_grid_model_io-1.3.13/tests/data/vision/vision_validation.vnf.license → /power_grid_model_io-1.3.14/tests/data/vision/vision_nl.xlsx.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_validation.vnf +0 -0
- /power_grid_model_io-1.3.13/tests/data/zip/foo-bar.zip.license → /power_grid_model_io-1.3.14/tests/data/vision/vision_validation.vnf.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/zip/foo-bar.zip +0 -0
- /power_grid_model_io-1.3.13/tests/data/zip/foo.zip.license → /power_grid_model_io-1.3.14/tests/data/zip/foo-bar.zip.license +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/zip/foo.zip +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/test_utils.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/conftest.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_base_converter.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_pgm_json_converter.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_tabular_converter.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_vision_excel_converter.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_stores/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_stores/test_base_data_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_stores/test_csv_dir_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_stores/test_excel_file_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_stores/test_json_file_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_stores/test_vision_excel_file_store.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_types/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_types/test_data_types.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_types/test_tabular_data.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/functions/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/functions/test_filters.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/functions/test_functions.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/functions/test_phase_to_phase.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_field_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_multiplier_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_tabular_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_unit_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_value_mapping.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_auto_id.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_dict.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_download.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_json.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_modules.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_parsing.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_uuid_excel_cvtr.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_zip.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/utils.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/conftest.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/converters/__init__.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/converters/test_vision_excel_converter.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/test_test_utils.py +0 -0
- {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/utils.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.3.14
|
|
@@ -99,7 +99,7 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
99
99
|
self.idx_lookup = {}
|
|
100
100
|
self.next_idx = 0
|
|
101
101
|
|
|
102
|
-
# Set
|
|
102
|
+
# Set pandapower data
|
|
103
103
|
self.pp_input_data = data
|
|
104
104
|
|
|
105
105
|
# Convert
|
|
@@ -360,6 +360,9 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
360
360
|
Furthermore, creates a global node lookup table, which stores nodes' voltage magnitude per unit and the voltage
|
|
361
361
|
angle in degrees
|
|
362
362
|
"""
|
|
363
|
+
# TODO create output_data_3ph for remaining components
|
|
364
|
+
# Although Pandapower itself did not implmenet res_shunt_3ph
|
|
365
|
+
# Since results are avaiable in PGM output, these should be converted.
|
|
363
366
|
self._pp_buses_output_3ph()
|
|
364
367
|
self._pp_lines_output_3ph()
|
|
365
368
|
self._pp_ext_grids_output_3ph()
|
|
@@ -376,6 +379,7 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
376
379
|
Returns:
|
|
377
380
|
a power-grid-model structured array for the Node component
|
|
378
381
|
"""
|
|
382
|
+
# TODO handle out-of-service buses, either here or in get_switch_states
|
|
379
383
|
pp_busses = self.pp_input_data["bus"]
|
|
380
384
|
|
|
381
385
|
if pp_busses.empty:
|
|
@@ -422,11 +426,12 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
422
426
|
pgm_lines["x1"] = self._get_pp_attr("line", "x_ohm_per_km", expected_type="f8") * multiplier
|
|
423
427
|
pgm_lines["c1"] = c_nf_per_km * length_km * parallel * 1e-9
|
|
424
428
|
# The formula for tan1 = R_1 / Xc_1 = (g * 1e-6) / (2 * pi * f * c * 1e-9) = g / (2 * pi * f * c * 1e-3)
|
|
425
|
-
pgm_lines["tan1"] = (
|
|
426
|
-
self._get_pp_attr("line", "g_us_per_km", expected_type="f8", default=0)
|
|
427
|
-
|
|
428
|
-
|
|
429
|
+
pgm_lines["tan1"] = np.divide(
|
|
430
|
+
self._get_pp_attr("line", "g_us_per_km", expected_type="f8", default=0),
|
|
431
|
+
c_nf_per_km * (2 * np.pi * self.system_frequency * 1e-3),
|
|
432
|
+
where=c_nf_per_km != 0.0,
|
|
429
433
|
)
|
|
434
|
+
pgm_lines["tan1"][np.equal(c_nf_per_km, 0.0)] = 0.0
|
|
430
435
|
pgm_lines["i_n"] = (
|
|
431
436
|
(self._get_pp_attr("line", "max_i_ka", expected_type="f8", default=np.nan) * 1e3)
|
|
432
437
|
* self._get_pp_attr("line", "df", expected_type="f8", default=1)
|
|
@@ -435,11 +440,12 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
435
440
|
pgm_lines["r0"] = self._get_pp_attr("line", "r0_ohm_per_km", expected_type="f8", default=np.nan) * multiplier
|
|
436
441
|
pgm_lines["x0"] = self._get_pp_attr("line", "x0_ohm_per_km", expected_type="f8", default=np.nan) * multiplier
|
|
437
442
|
pgm_lines["c0"] = c0_nf_per_km * length_km * parallel * 1e-9
|
|
438
|
-
pgm_lines["tan0"] = (
|
|
439
|
-
self._get_pp_attr("line", "g0_us_per_km", expected_type="f8", default=0)
|
|
440
|
-
|
|
441
|
-
|
|
443
|
+
pgm_lines["tan0"] = np.divide(
|
|
444
|
+
self._get_pp_attr("line", "g0_us_per_km", expected_type="f8", default=0),
|
|
445
|
+
c0_nf_per_km * (2 * np.pi * self.system_frequency * 1e-3),
|
|
446
|
+
where=c0_nf_per_km != 0.0,
|
|
442
447
|
)
|
|
448
|
+
pgm_lines["tan0"][np.equal(c0_nf_per_km, 0.0)] = 0.0
|
|
443
449
|
assert ComponentType.line not in self.pgm_input_data
|
|
444
450
|
self.pgm_input_data[ComponentType.line] = pgm_lines
|
|
445
451
|
|
|
@@ -755,7 +761,10 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
755
761
|
valid = np.logical_and(np.not_equal(sn_mva, 0.0), np.isfinite(sn_mva))
|
|
756
762
|
mag_g = np.divide(pfe, sn_mva * 1000, where=valid)
|
|
757
763
|
mag_g[np.logical_not(valid)] = np.nan
|
|
758
|
-
|
|
764
|
+
z_squared = i_no_load * i_no_load * 1e-4 - mag_g * mag_g
|
|
765
|
+
valid = np.logical_and(np.greater(z_squared, 0), np.isfinite(z_squared))
|
|
766
|
+
rx_mag = np.divide(mag_g, np.sqrt(z_squared, where=valid), where=valid)
|
|
767
|
+
rx_mag[np.logical_not(valid)] = np.inf
|
|
759
768
|
# positive and zero sequence magnetising impedance must be equal.
|
|
760
769
|
# mag0_percent = z0mag / z0.
|
|
761
770
|
checks = {
|
|
@@ -1382,7 +1391,9 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
1382
1391
|
if self.trafo_loading == "current":
|
|
1383
1392
|
ui_from = pgm_output_transformers["i_from"] * pgm_input_transformers["u1"]
|
|
1384
1393
|
ui_to = pgm_output_transformers["i_to"] * pgm_input_transformers["u2"]
|
|
1385
|
-
loading =
|
|
1394
|
+
loading = (
|
|
1395
|
+
(np.sqrt(3) * np.maximum(ui_from, ui_to) / pgm_input_transformers["sn"]) * loading_multiplier * 1e2
|
|
1396
|
+
)
|
|
1386
1397
|
elif self.trafo_loading == "power":
|
|
1387
1398
|
loading = pgm_output_transformers["loading"] * loading_multiplier * 1e2
|
|
1388
1399
|
else:
|
|
@@ -1704,7 +1715,6 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
1704
1715
|
)
|
|
1705
1716
|
pp_switches_output = pp_switches_output[["i_ka"]]
|
|
1706
1717
|
pp_switches_output.set_index(pp_switches_output_index, inplace=True)
|
|
1707
|
-
pp_switches_output["loading_percent"] = np.nan
|
|
1708
1718
|
|
|
1709
1719
|
# For et=b, ie bus to bus switches, links are created. get result from them
|
|
1710
1720
|
if not links_absent:
|
|
@@ -1712,6 +1722,9 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
1712
1722
|
# For links, i_from = i_to = i_ka / 1e3
|
|
1713
1723
|
link_ids = self._get_pp_ids("switch", links["id"], "b2b_switches")
|
|
1714
1724
|
pp_switches_output.loc[link_ids, "i_ka"] = links["i_from"] * 1e-3
|
|
1725
|
+
in_ka = self.pp_input_data["switch"]["in_ka"].values
|
|
1726
|
+
pp_switches_output["loading_percent"] = np.nan
|
|
1727
|
+
pp_switches_output["loading_percent"] = np.divide(pp_switches_output["i_ka"], in_ka, where=in_ka != 0)
|
|
1715
1728
|
|
|
1716
1729
|
assert "res_switch" not in self.pp_output_data
|
|
1717
1730
|
self.pp_output_data["res_switch"] = pp_switches_output
|
|
@@ -1942,7 +1955,10 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
1942
1955
|
pp_output_lines_3ph["loading_c_percent"] = (
|
|
1943
1956
|
np.maximum(pp_output_lines_3ph["i_c_from_ka"], pp_output_lines_3ph["i_c_to_ka"]) / pgm_input_lines["i_n"]
|
|
1944
1957
|
) * 1e5
|
|
1945
|
-
pp_output_lines_3ph["loading_percent"] =
|
|
1958
|
+
pp_output_lines_3ph["loading_percent"] = np.maximum(
|
|
1959
|
+
np.maximum(pp_output_lines_3ph["loading_a_percent"], pp_output_lines_3ph["loading_b_percent"]),
|
|
1960
|
+
pp_output_lines_3ph["loading_c_percent"],
|
|
1961
|
+
)
|
|
1946
1962
|
|
|
1947
1963
|
assert "res_line_3ph" not in self.pp_output_data
|
|
1948
1964
|
self.pp_output_data["res_line_3ph"] = pp_output_lines_3ph
|
|
@@ -2017,38 +2033,29 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
2017
2033
|
# Only derating factor used here. Sn is already being multiplied by parallel
|
|
2018
2034
|
loading_multiplier = pp_input_transformers["df"] * 1e2
|
|
2019
2035
|
if self.trafo_loading == "current":
|
|
2020
|
-
ui_from = pgm_output_transformers["i_from"] * pgm_input_transformers["u1"]
|
|
2021
|
-
ui_to = pgm_output_transformers["i_to"] * pgm_input_transformers["u2"]
|
|
2022
|
-
loading_a_percent = np.maximum(ui_from[:, 0], ui_to[:, 0]) / pgm_input_transformers["sn"]
|
|
2023
|
-
loading_b_percent = np.maximum(ui_from[:, 1], ui_to[:, 1]) / pgm_input_transformers["sn"]
|
|
2024
|
-
loading_c_percent = np.maximum(ui_from[:, 2], ui_to[:, 2]) / pgm_input_transformers["sn"]
|
|
2025
|
-
loading = np.maximum(np.sum(ui_from, axis=1), np.sum(ui_to, axis=1)) / pgm_input_transformers["sn"]
|
|
2036
|
+
ui_from = pgm_output_transformers["i_from"] * pgm_input_transformers["u1"][:, None]
|
|
2037
|
+
ui_to = pgm_output_transformers["i_to"] * pgm_input_transformers["u2"][:, None]
|
|
2038
|
+
loading_a_percent = np.sqrt(3) * np.maximum(ui_from[:, 0], ui_to[:, 0]) / pgm_input_transformers["sn"]
|
|
2039
|
+
loading_b_percent = np.sqrt(3) * np.maximum(ui_from[:, 1], ui_to[:, 1]) / pgm_input_transformers["sn"]
|
|
2040
|
+
loading_c_percent = np.sqrt(3) * np.maximum(ui_from[:, 2], ui_to[:, 2]) / pgm_input_transformers["sn"]
|
|
2026
2041
|
elif self.trafo_loading == "power":
|
|
2027
|
-
loading_a_percent = (
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
/ pgm_output_transformers["s_n"]
|
|
2040
|
-
)
|
|
2041
|
-
loading_c_percent = (
|
|
2042
|
-
np.maximum(
|
|
2043
|
-
pgm_output_transformers["s_from"][:, 2],
|
|
2044
|
-
pgm_output_transformers["s_to"][:, 2],
|
|
2045
|
-
)
|
|
2046
|
-
/ pgm_output_transformers["s_n"]
|
|
2047
|
-
)
|
|
2048
|
-
loading = pgm_output_transformers["loading"]
|
|
2042
|
+
loading_a_percent = np.maximum(
|
|
2043
|
+
pgm_output_transformers["s_from"][:, 0],
|
|
2044
|
+
pgm_output_transformers["s_to"][:, 0],
|
|
2045
|
+
) / (pgm_input_transformers["sn"] / 3)
|
|
2046
|
+
loading_b_percent = np.maximum(
|
|
2047
|
+
pgm_output_transformers["s_from"][:, 1],
|
|
2048
|
+
pgm_output_transformers["s_to"][:, 1],
|
|
2049
|
+
) / (pgm_input_transformers["sn"] / 3)
|
|
2050
|
+
loading_c_percent = np.maximum(
|
|
2051
|
+
pgm_output_transformers["s_from"][:, 2],
|
|
2052
|
+
pgm_output_transformers["s_to"][:, 2],
|
|
2053
|
+
) / (pgm_input_transformers["sn"] / 3)
|
|
2049
2054
|
else:
|
|
2050
2055
|
raise ValueError(f"Invalid transformer loading type: {str(self.trafo_loading)}")
|
|
2051
2056
|
|
|
2057
|
+
loading = np.maximum(np.maximum(loading_a_percent, loading_b_percent), loading_c_percent)
|
|
2058
|
+
|
|
2052
2059
|
pp_output_trafos_3ph = pd.DataFrame(
|
|
2053
2060
|
columns=[
|
|
2054
2061
|
"p_a_hv_mw",
|
|
@@ -69,6 +69,8 @@ tests/data/pandapower/pgm_output_data.json
|
|
|
69
69
|
tests/data/pandapower/pgm_output_data.json.license
|
|
70
70
|
tests/data/pandapower/pp_v2_net_3ph_output.json
|
|
71
71
|
tests/data/pandapower/pp_v2_net_3ph_output.json.license
|
|
72
|
+
tests/data/pandapower/pp_v2_net_3ph_output_current_loading.json
|
|
73
|
+
tests/data/pandapower/pp_v2_net_3ph_output_current_loading.json.license
|
|
72
74
|
tests/data/pandapower/pp_v2_net_output.json
|
|
73
75
|
tests/data/pandapower/pp_v2_net_output.json.license
|
|
74
76
|
tests/data/pandapower/pp_validation.py
|