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.

Files changed (145) hide show
  1. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/PKG-INFO +1 -1
  2. power_grid_model_io-1.3.14/PYPI_VERSION +1 -0
  3. {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
  4. {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
  5. {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
  6. power_grid_model_io-1.3.14/tests/data/pandapower/pp_v2_net_3ph_output_current_loading.json +3161 -0
  7. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pp_v2_net_output.json +1 -1
  8. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pp_validation.py +47 -2
  9. power_grid_model_io-1.3.14/tests/data/zip/foo.zip.license +3 -0
  10. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_pandapower_converter_input.py +205 -187
  11. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_pandapower_converter_output.py +5 -2
  12. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/converters/test_pandapower_converter_input.py +61 -27
  13. power_grid_model_io-1.3.14/tests/validation/converters/test_pandapower_converter_output.py +280 -0
  14. power_grid_model_io-1.3.13/PYPI_VERSION +0 -1
  15. power_grid_model_io-1.3.13/tests/validation/converters/test_pandapower_converter_output.py +0 -180
  16. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/LICENSE +0 -0
  17. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/MANIFEST.in +0 -0
  18. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/README.md +0 -0
  19. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/VERSION +0 -0
  20. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/pyproject.toml +0 -0
  21. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/setup.cfg +0 -0
  22. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/setup.py +0 -0
  23. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/__init__.py +0 -0
  24. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/config/__init__.py +0 -0
  25. {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
  26. {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
  27. {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
  28. {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
  29. {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
  30. {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
  31. {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
  32. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/converters/__init__.py +0 -0
  33. {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
  34. {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
  35. {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
  36. {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
  37. {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
  38. {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
  39. {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
  40. {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
  41. {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
  42. {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
  43. {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
  44. {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
  45. {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
  46. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/functions/__init__.py +0 -0
  47. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/functions/_functions.py +0 -0
  48. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/functions/filters.py +0 -0
  49. {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
  50. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/mappings/__init__.py +0 -0
  51. {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
  52. {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
  53. {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
  54. {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
  55. {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
  56. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/py.typed +0 -0
  57. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/__init__.py +0 -0
  58. {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
  59. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/dict.py +0 -0
  60. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/download.py +0 -0
  61. {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
  62. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/json.py +0 -0
  63. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/modules.py +0 -0
  64. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/parsing.py +0 -0
  65. {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
  66. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/src/power_grid_model_io/utils/zip.py +0 -0
  67. {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
  68. {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
  69. {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
  70. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/__init__.py +0 -0
  71. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/conftest.py +0 -0
  72. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/config/dummy_mapping.yaml +0 -0
  73. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/config/mapping.yaml +0 -0
  74. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_asym_output_data.json +0 -0
  75. {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
  76. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_input_data.json +0 -0
  77. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_input_data.json.license +0 -0
  78. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_output_data.json +0 -0
  79. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/pandapower/pgm_output_data.json.license +0 -0
  80. {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
  81. {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
  82. /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
  83. /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
  84. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/excel_ambiguity_check_data.xlsx +0 -0
  85. /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
  86. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/pgm_input_data_en.json +0 -0
  87. /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
  88. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/pgm_input_data_nl.json +0 -0
  89. /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
  90. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_9_5_en.yaml +0 -0
  91. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_9_5_nl.yaml +0 -0
  92. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_en.xlsx +0 -0
  93. /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
  94. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_en_9_7.xlsx +0 -0
  95. /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
  96. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_nl.xlsx +0 -0
  97. /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
  98. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/vision/vision_validation.vnf +0 -0
  99. /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
  100. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/zip/foo-bar.zip +0 -0
  101. /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
  102. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/data/zip/foo.zip +0 -0
  103. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/test_utils.py +0 -0
  104. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/__init__.py +0 -0
  105. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/conftest.py +0 -0
  106. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/__init__.py +0 -0
  107. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_base_converter.py +0 -0
  108. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_pgm_json_converter.py +0 -0
  109. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_tabular_converter.py +0 -0
  110. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/converters/test_vision_excel_converter.py +0 -0
  111. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_stores/__init__.py +0 -0
  112. {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
  113. {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
  114. {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
  115. {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
  116. {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
  117. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_types/__init__.py +0 -0
  118. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_types/test_data_types.py +0 -0
  119. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/data_types/test_tabular_data.py +0 -0
  120. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/functions/__init__.py +0 -0
  121. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/functions/test_filters.py +0 -0
  122. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/functions/test_functions.py +0 -0
  123. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/functions/test_phase_to_phase.py +0 -0
  124. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/__init__.py +0 -0
  125. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_field_mapping.py +0 -0
  126. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_multiplier_mapping.py +0 -0
  127. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_tabular_mapping.py +0 -0
  128. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_unit_mapping.py +0 -0
  129. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/mappings/test_value_mapping.py +0 -0
  130. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/__init__.py +0 -0
  131. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_auto_id.py +0 -0
  132. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_dict.py +0 -0
  133. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_download.py +0 -0
  134. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_json.py +0 -0
  135. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_modules.py +0 -0
  136. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_parsing.py +0 -0
  137. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_uuid_excel_cvtr.py +0 -0
  138. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/unit/utils/test_zip.py +0 -0
  139. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/utils.py +0 -0
  140. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/__init__.py +0 -0
  141. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/conftest.py +0 -0
  142. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/converters/__init__.py +0 -0
  143. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/converters/test_vision_excel_converter.py +0 -0
  144. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/test_test_utils.py +0 -0
  145. {power_grid_model_io-1.3.13 → power_grid_model_io-1.3.14}/tests/validation/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: power-grid-model-io
3
- Version: 1.3.13
3
+ Version: 1.3.14
4
4
  Summary: Power Grid Model Input/Output
5
5
  Author-email: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>
6
6
  License: MPL-2.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 pandas data
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
- / c_nf_per_km
428
- / (2 * np.pi * self.system_frequency * 1e-3)
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
- / c0_nf_per_km
441
- / (2 * np.pi * self.system_frequency * 1e-3)
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
- rx_mag = mag_g / np.sqrt(i_no_load * i_no_load * 1e-4 - mag_g * mag_g)
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 = np.maximum(ui_from, ui_to) / pgm_input_transformers["sn"] * loading_multiplier * 1e2
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"] = pgm_output_lines["loading"] * 1e2
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
- np.maximum(
2029
- pgm_output_transformers["s_from"][:, 0],
2030
- pgm_output_transformers["s_to"][:, 0],
2031
- )
2032
- / pgm_output_transformers["s_n"]
2033
- )
2034
- loading_b_percent = (
2035
- np.maximum(
2036
- pgm_output_transformers["s_from"][:, 1],
2037
- pgm_output_transformers["s_to"][:, 1],
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",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: power-grid-model-io
3
- Version: 1.3.13
3
+ Version: 1.3.14
4
4
  Summary: Power Grid Model Input/Output
5
5
  Author-email: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>
6
6
  License: MPL-2.0
@@ -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