GridCal 5.2.12__tar.gz → 5.3.0__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.
Files changed (288) hide show
  1. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/about_dialogue.py +2 -2
  2. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/AnalysisDialogue.py +1 -1
  3. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/object_plot_analysis.py +15 -11
  4. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +1 -1
  5. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +12 -2
  6. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +109 -23
  7. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/base_diagram_widget.py +27 -8
  8. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/ConsoleLog.py +3 -3
  9. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/MainWindow.py +405 -404
  10. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +1 -1
  11. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +82 -122
  12. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/objects.py +2 -1
  13. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/base_gui.py +2 -1
  14. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/io.py +66 -48
  15. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/simulations.py +9 -8
  16. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/icons_rc.py +203 -203
  17. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/models_dialogue.py +3 -3
  18. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/pandas_model.py +6 -11
  19. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_color.py +15 -18
  20. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +17 -15
  21. gridcal-5.3.0/GridCal/__version__.py +27 -0
  22. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/plugins.py +6 -6
  23. {gridcal-5.2.12 → gridcal-5.3.0}/PKG-INFO +1 -1
  24. gridcal-5.2.12/GridCal/__version__.py +0 -49
  25. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ExecuteGridCal.py +0 -0
  26. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  27. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  28. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  29. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  30. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/__init__.py +0 -0
  31. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/gui.py +0 -0
  32. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  33. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  34. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  35. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  36. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  37. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  38. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  39. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  40. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  41. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  42. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  43. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  44. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  45. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  46. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  47. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  48. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  49. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
  50. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  51. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  52. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  53. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  54. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  55. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
  56. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  57. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  58. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  59. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
  60. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  61. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  62. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  63. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  64. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
  65. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
  66. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
  67. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
  68. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
  69. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
  70. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
  71. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  72. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  73. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  74. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  75. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  76. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  77. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  78. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  79. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  80. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  81. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  82. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
  83. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  84. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  85. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  86. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  87. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  88. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
  89. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  90. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  91. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  92. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  93. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  94. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  95. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  96. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  97. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  98. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  99. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  100. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  101. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  102. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  103. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  104. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  105. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  106. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  107. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  108. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  109. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  110. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  111. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  112. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  113. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  114. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  115. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  116. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  117. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  118. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  119. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  120. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/__init__.py +0 -0
  121. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  122. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  123. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  124. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  125. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  126. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/gui.py +0 -0
  127. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  128. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  129. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  130. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  131. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  132. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  133. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  134. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  135. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  136. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  137. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  138. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  139. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  140. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/GridCalMain.py +0 -0
  141. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  142. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  143. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  144. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  145. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  146. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  147. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  148. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  149. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  150. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  151. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  152. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  153. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  154. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/__init__.py +0 -0
  155. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/object_select_window.py +0 -0
  156. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/update_gui_file.py +0 -0
  157. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  158. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  159. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  160. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  161. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  162. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  163. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  164. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  165. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  166. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  167. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  168. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  169. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  170. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  171. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  172. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  173. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  174. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  175. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  176. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  177. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  178. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  179. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  180. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  181. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  182. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  183. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
  184. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
  185. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
  186. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
  187. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  188. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  189. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  190. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  191. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  192. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  193. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  194. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  195. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  196. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  197. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  198. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  199. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  200. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  201. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  202. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  203. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  204. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  205. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  206. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  207. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  208. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Visualization/__init__.py +0 -0
  209. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Visualization/visualization.py +0 -0
  210. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Widgets/__init__.py +0 -0
  211. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  212. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  213. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  214. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  215. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  216. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  217. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  218. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/__init__.py +0 -0
  219. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/associations_model.py +0 -0
  220. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/console_widget.py +0 -0
  221. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/general_dialogues.py +0 -0
  222. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/gui_functions.py +0 -0
  223. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/messages.py +0 -0
  224. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/object_model.py +0 -0
  225. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/plot_config.py +0 -0
  226. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/profiles_model.py +0 -0
  227. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/results_model.py +0 -0
  228. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/table_view_header_wrap.py +0 -0
  229. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/themes.py +0 -0
  230. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/update_gui_all.py +0 -0
  231. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/update_gui_common.py +0 -0
  232. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/wrappable_table_model.py +0 -0
  233. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/LICENSE.txt +0 -0
  234. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/__init__.py +0 -0
  235. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/export_results_driver.py +0 -0
  236. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/file_handler.py +0 -0
  237. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/server_driver.py +0 -0
  238. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/session.py +0 -0
  239. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/synchronization_driver.py +0 -0
  240. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/__init__.py +0 -0
  241. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  242. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  243. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  244. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  245. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  246. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  247. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  248. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  249. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  250. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  251. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  252. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  253. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  254. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  255. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  256. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  257. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  258. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  259. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  260. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  261. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  262. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  263. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  264. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  265. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  266. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  267. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  268. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  269. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  270. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  271. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  272. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  273. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  274. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  275. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  276. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  277. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/__init__.py +0 -0
  278. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/GridCal.ico +0 -0
  279. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/GridCal.svg +0 -0
  280. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/__init__.py +0 -0
  281. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/cables.csv +0 -0
  282. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/sequence_lines.csv +0 -0
  283. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/transformers.csv +0 -0
  284. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/wires.csv +0 -0
  285. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/templates.py +0 -0
  286. {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/update.py +0 -0
  287. {gridcal-5.2.12 → gridcal-5.3.0}/setup.cfg +0 -0
  288. {gridcal-5.2.12 → gridcal-5.3.0}/setup.py +0 -0
@@ -9,9 +9,9 @@ import subprocess
9
9
  from PySide6 import QtWidgets
10
10
  from typing import List
11
11
  from GridCal.Gui.AboutDialogue.gui import Ui_AboutDialog
12
- from GridCal.__version__ import __GridCal_VERSION__, contributors_msg, copyright_msg
12
+ from GridCal.__version__ import __GridCal_VERSION__
13
13
  from GridCal.update import check_version, get_upgrade_command
14
- from GridCalEngine.__version__ import __GridCalEngine_VERSION__
14
+ from GridCalEngine.__version__ import __GridCalEngine_VERSION__, copyright_msg, contributors_msg
15
15
  from GridCalEngine.Compilers.circuit_to_newton_pa import (NEWTON_PA_AVAILABLE,
16
16
  NEWTON_PA_RECOMMENDED_VERSION,
17
17
  NEWTON_PA_VERSION)
@@ -62,7 +62,7 @@ class GridAnalysisGUI(QtWidgets.QMainWindow):
62
62
  min_vcc=self.ui.transformerVccMinSpinBox.value(),
63
63
  max_vcc=self.ui.transformerVccMaxSpinBox.value(),
64
64
  branch_x_threshold=1e-4,
65
- condition_number_thrshold=1e-4,
65
+ condition_number_threshold=1e-4,
66
66
  logger=self.log
67
67
  )
68
68
 
@@ -24,7 +24,7 @@ from GridCalEngine.enumerations import DeviceType
24
24
  from GridCalEngine.Devices.types import ALL_DEV_TYPES
25
25
  from GridCalEngine.Utils.NumericalMethods.numerical_stability import (sparse_instability_svd_test,
26
26
  sparse_instability_lu_test)
27
- from GridCalEngine.DataStructures.numerical_circuit import compile_numerical_circuit_at
27
+ from GridCalEngine.Compilers.circuit_to_data import compile_numerical_circuit_at
28
28
 
29
29
 
30
30
  class GridErrorLog:
@@ -370,8 +370,6 @@ def analyze_lines(elements: List[Line],
370
370
  V1 = min(elm.bus_to.Vnom, elm.bus_from.Vnom)
371
371
  V2 = max(elm.bus_to.Vnom, elm.bus_from.Vnom)
372
372
 
373
- s = '[' + str(V1) + '-' + str(V2) + ']'
374
-
375
373
  if elm.bus_from is None:
376
374
  logger.add(object_type=elm.device_type.value,
377
375
  element_name=elm,
@@ -1140,6 +1138,7 @@ def analyze_static_gen(elements: List[StaticGenerator],
1140
1138
 
1141
1139
  :param elements:
1142
1140
  :param time_profile:
1141
+ :param logger:
1143
1142
  :return:
1144
1143
  """
1145
1144
  Pg = 0.0
@@ -1173,6 +1172,7 @@ def analyze_load(elements: List[Load],
1173
1172
 
1174
1173
  :param elements:
1175
1174
  :param time_profile:
1175
+ :param logger:
1176
1176
  :return:
1177
1177
  """
1178
1178
  Pl = 0.0
@@ -1212,7 +1212,7 @@ def grid_analysis(circuit: MultiCircuit,
1212
1212
  max_vcc=18,
1213
1213
  logger=GridErrorLog(),
1214
1214
  branch_x_threshold=1e-4,
1215
- condition_number_thrshold=1e4,
1215
+ condition_number_threshold=1e4,
1216
1216
  eps_max: float = 1e20,
1217
1217
  eps_min: float = 1e-20):
1218
1218
  """
@@ -1230,7 +1230,7 @@ def grid_analysis(circuit: MultiCircuit,
1230
1230
  :param min_vcc: Minimum short circuit voltage (%)
1231
1231
  :param logger: GridErrorLog
1232
1232
  :param branch_x_threshold: Value to compare branches X such that it is numerically stable
1233
- :param condition_number_thrshold: Condition number threshold to report unstability
1233
+ :param condition_number_threshold: Condition number threshold to report unstability
1234
1234
  :param eps_max: Max epsylon value for comparison
1235
1235
  :param eps_min: Min epsylon value for comparison
1236
1236
  :return: list of fixable error objects
@@ -1396,13 +1396,16 @@ def grid_analysis(circuit: MultiCircuit,
1396
1396
  propty="Reactive power out of bounds",
1397
1397
  message='There is too much reactive power imbalance',
1398
1398
  lower=str(Qmin),
1399
- val=Ql_prof[t],
1399
+ val=float(Ql_prof[t]),
1400
1400
  upper=str(Qmax))
1401
1401
 
1402
1402
  # analyze the numerical stability
1403
1403
  nc = compile_numerical_circuit_at(circuit, t_idx=None) # compile the snapshot
1404
1404
 
1405
- rcond, unstable = sparse_instability_svd_test(nc.Bbus, condition_number_thrshold=1.0 / condition_number_thrshold)
1405
+ Sbus = nc.get_power_injections()
1406
+ indices = nc.get_simulation_indices(Sbus=Sbus)
1407
+ lin_adm = nc.get_linear_admittance_matrices(indices=indices)
1408
+ rcond, unstable = sparse_instability_svd_test(lin_adm.Bbus, condition_number_thrshold=1.0 / condition_number_threshold)
1406
1409
 
1407
1410
  if unstable:
1408
1411
  logger.add(object_type='matrix',
@@ -1413,9 +1416,10 @@ def grid_analysis(circuit: MultiCircuit,
1413
1416
  message='B matrix is SVD-Unstable: this may make linear power flows output nonsense',
1414
1417
  lower="",
1415
1418
  val=str(rcond),
1416
- upper=str(1.0 / condition_number_thrshold))
1419
+ upper=str(1.0 / condition_number_threshold))
1417
1420
 
1418
- rcond, unstable = sparse_instability_lu_test(nc.Bpqpv, condition_number_thrshold=condition_number_thrshold)
1421
+ rcond, unstable = sparse_instability_lu_test(lin_adm.get_Bred(pqpv=indices.no_slack),
1422
+ condition_number_thrshold=condition_number_threshold)
1419
1423
 
1420
1424
  if unstable:
1421
1425
  logger.add(object_type='matrix',
@@ -1426,7 +1430,7 @@ def grid_analysis(circuit: MultiCircuit,
1426
1430
  message='B matrix is LU-Unstable: this may make linear power flows output nonsense',
1427
1431
  lower="",
1428
1432
  val=str(rcond),
1429
- upper=str(condition_number_thrshold))
1433
+ upper=str(condition_number_threshold))
1430
1434
 
1431
1435
  return fixable_errors
1432
1436
 
@@ -1533,7 +1537,7 @@ def object_histogram_analysis(circuit: MultiCircuit,
1533
1537
  align='mid',
1534
1538
  orientation='vertical')
1535
1539
  ax.plot(x, np.zeros(n), 'o')
1536
- ax.set_title(extended_prop[j])
1540
+ ax.set_title(str(extended_prop[j]))
1537
1541
 
1538
1542
  if log_scale_extended[j]:
1539
1543
  ax.set_xscale('log')
@@ -98,8 +98,8 @@ class TileWorker(QThread):
98
98
  # try to retrieve the image
99
99
  error = False
100
100
  pixmap = self.error_image
101
+ tile_url = self.server + self.tilepath.format(Z=level, X=x, Y=y)
101
102
  try:
102
- tile_url = self.server + self.tilepath.format(Z=level, X=x, Y=y)
103
103
 
104
104
  # Create a Request object with the desired headers
105
105
  response = urlopen(Request(tile_url, headers={'User-Agent': 'GridCal 5'}))
@@ -985,9 +985,14 @@ class GridMapWidget(BaseDiagramWidget):
985
985
  hvdc_loading: Vec = None,
986
986
  hvdc_active: IntVec = None,
987
987
  loading_label: str = 'loading',
988
+ vsc_Pf: Vec = None,
989
+ vsc_Pt: Vec = None,
990
+ vsc_Qt: Vec = None,
991
+ vsc_losses: Vec = None,
992
+ vsc_loading: Vec = None,
993
+ vsc_active: IntVec = None,
988
994
  ma: Vec = None,
989
995
  theta: Vec = None,
990
- Beq: Vec = None,
991
996
  fluid_node_p2x_flow: Vec = None,
992
997
  fluid_node_current_level: Vec = None,
993
998
  fluid_node_spillage: Vec = None,
@@ -1017,10 +1022,15 @@ class GridMapWidget(BaseDiagramWidget):
1017
1022
  :param hvdc_losses: HVDC branch losses [MW]
1018
1023
  :param hvdc_loading: HVDC Branch loading [%]
1019
1024
  :param hvdc_active: HVDC Branch status
1025
+ :param vsc_Pf: VSC branch flows "from" [MW]
1026
+ :param vsc_Pt: VSC branch flows "to" [MW]
1027
+ :param vsc_Qt: VSC branch flows "to" [Mvar]
1028
+ :param vsc_losses: VSC branch losses [MW]
1029
+ :param vsc_loading: VSC Branch loading [%]
1030
+ :param vsc_active: VSC Branch status
1020
1031
  :param loading_label: String saling whatever the loading label means
1021
1032
  :param ma: branch phase shift angle (rad)
1022
1033
  :param theta: branch tap module (p.u.)
1023
- :param Beq: Branch equivanet susceptance (p.u.)
1024
1034
  :param fluid_node_p2x_flow: P2X flow rate (m3)
1025
1035
  :param fluid_node_current_level: Current level (m3)
1026
1036
  :param fluid_node_spillage: Spillage (m3)
@@ -2160,8 +2160,7 @@ class SchematicWidget(BaseDiagramWidget):
2160
2160
  :return: OPTIONAL_PORT, OPTIONAL_PORT
2161
2161
  """
2162
2162
 
2163
- obj_from, obj_to, is_ok = branch.get_from_and_to_objects(t_idx=None,
2164
- logger=logger,
2163
+ obj_from, obj_to, is_ok = branch.get_from_and_to_objects(logger=logger,
2165
2164
  prefer_node_breaker=prefer_node_breaker)
2166
2165
 
2167
2166
  # Bus provided, search its graphics
@@ -2196,8 +2195,7 @@ class SchematicWidget(BaseDiagramWidget):
2196
2195
  :return: OPTIONAL_PORT, OPTIONAL_PORT
2197
2196
  """
2198
2197
 
2199
- obj_from, obj_to, is_ok = branch.get_from_and_to_objects(t_idx=None,
2200
- logger=logger,
2198
+ obj_from, obj_to, is_ok = branch.get_from_and_to_objects(logger=logger,
2201
2199
  prefer_node_breaker=prefer_node_breaker)
2202
2200
 
2203
2201
  # Bus provided, search its graphics
@@ -2846,7 +2844,7 @@ class SchematicWidget(BaseDiagramWidget):
2846
2844
 
2847
2845
  if isinstance(elm, Bus):
2848
2846
 
2849
- if not elm.is_internal: # 3w transformer buses are not represented
2847
+ if not elm.internal: # 3w transformer buses are not represented
2850
2848
  if injections_by_bus is None:
2851
2849
  injections_by_bus = self.circuit.get_injection_devices_grouped_by_bus()
2852
2850
 
@@ -2969,7 +2967,7 @@ class SchematicWidget(BaseDiagramWidget):
2969
2967
  nn = len(buses)
2970
2968
  for i, bus in enumerate(buses):
2971
2969
 
2972
- if not bus.is_internal: # 3w transformer buses are not represented
2970
+ if not bus.internal: # 3w transformer buses are not represented
2973
2971
 
2974
2972
  if prog_func is not None:
2975
2973
  prog_func((i + 1) / nn * 100.0)
@@ -3304,9 +3302,14 @@ class SchematicWidget(BaseDiagramWidget):
3304
3302
  hvdc_loading: Vec = None,
3305
3303
  hvdc_active: IntVec = None,
3306
3304
  loading_label: str = 'loading',
3305
+ vsc_Pf: Vec = None,
3306
+ vsc_Pt: Vec = None,
3307
+ vsc_Qt: Vec = None,
3308
+ vsc_losses: Vec = None,
3309
+ vsc_loading: Vec = None,
3310
+ vsc_active: IntVec = None,
3307
3311
  ma: Vec = None,
3308
3312
  theta: Vec = None,
3309
- Beq: Vec = None,
3310
3313
  fluid_node_p2x_flow: Vec = None,
3311
3314
  fluid_node_current_level: Vec = None,
3312
3315
  fluid_node_spillage: Vec = None,
@@ -3336,10 +3339,15 @@ class SchematicWidget(BaseDiagramWidget):
3336
3339
  :param hvdc_losses: HVDC branch losses [MW]
3337
3340
  :param hvdc_loading: HVDC Branch loading [%]
3338
3341
  :param hvdc_active: HVDC Branch status
3342
+ :param vsc_Pf: VSC branch flows "from" [MW]
3343
+ :param vsc_Pt: VSC branch flows "to" [MW]
3344
+ :param vsc_Qt: VSC branch flows "to" [Mvar]
3345
+ :param vsc_losses: VSC branch losses [MW]
3346
+ :param vsc_loading: VSC Branch loading [%]
3347
+ :param vsc_active: VSC Branch status
3339
3348
  :param loading_label: String saling whatever the loading label means
3340
3349
  :param ma: branch phase shift angle (rad)
3341
3350
  :param theta: branch tap module (p.u.)
3342
- :param Beq: Branch equivanet susceptance (p.u.)
3343
3351
  :param fluid_node_p2x_flow: P2X flow rate (m3)
3344
3352
  :param fluid_node_current_level: Current level (m3)
3345
3353
  :param fluid_node_spillage: Spillage (m3)
@@ -3367,7 +3375,7 @@ class SchematicWidget(BaseDiagramWidget):
3367
3375
  voltage_cmap = viz.get_voltage_color_map()
3368
3376
  loading_cmap = viz.get_loading_color_map()
3369
3377
 
3370
- '''
3378
+ """
3371
3379
  class BusMode(Enum):
3372
3380
  PQ = 1,
3373
3381
  PV = 2,
@@ -3375,7 +3383,7 @@ class SchematicWidget(BaseDiagramWidget):
3375
3383
  NONE = 4,
3376
3384
  STO_DISPATCH = 5
3377
3385
  PVB = 6
3378
- '''
3386
+ """
3379
3387
 
3380
3388
  bus_types = ['', 'PQ', 'PV', 'Slack', 'PQV', 'P']
3381
3389
  max_flow = 1
@@ -3446,8 +3454,10 @@ class SchematicWidget(BaseDiagramWidget):
3446
3454
  else:
3447
3455
  Sfnorm = Sfabs
3448
3456
 
3449
- if self.circuit.get_branch_number_wo_hvdc() == len(Sf):
3450
- for i, branch in enumerate(self.circuit.get_branches_wo_hvdc_iter()):
3457
+ if self.circuit.get_branch_number(add_vsc=False, add_hvdc=False, add_switch=True) == len(Sf):
3458
+ for i, branch in enumerate(self.circuit.get_branches_iter(add_vsc=False,
3459
+ add_hvdc=False,
3460
+ add_switch=True)):
3451
3461
 
3452
3462
  # try to find the diagram object of the DB object
3453
3463
  graphic_object = self.graphics_manager.query(branch)
@@ -3503,15 +3513,15 @@ class SchematicWidget(BaseDiagramWidget):
3503
3513
  if theta is not None:
3504
3514
  tooltip += '\ntap angle:\t' + "{:10.4f}".format(theta[i]) + ' rad'
3505
3515
 
3506
- if branch.device_type == DeviceType.VscDevice:
3507
- if ma is not None:
3508
- tooltip += '\ntap module:\t' + "{:10.4f}".format(ma[i])
3509
-
3510
- if theta is not None:
3511
- tooltip += '\nfiring angle:\t' + "{:10.4f}".format(theta[i]) + ' rad'
3516
+ # if branch.device_type == DeviceType.VscDevice:
3517
+ # if ma is not None:
3518
+ # tooltip += '\ntap module:\t' + "{:10.4f}".format(ma[i])
3519
+ #
3520
+ # if theta is not None:
3521
+ # tooltip += '\nfiring angle:\t' + "{:10.4f}".format(theta[i]) + ' rad'
3512
3522
 
3513
- if Beq is not None:
3514
- tooltip += '\nBeq:\t' + "{:10.4f}".format(Beq[i])
3523
+ # if Beq is not None:
3524
+ # tooltip += '\nBeq:\t' + "{:10.4f}".format(Beq[i])
3515
3525
 
3516
3526
  graphic_object.setToolTipText(tooltip)
3517
3527
  graphic_object.set_colour(color, w, style)
@@ -3531,9 +3541,85 @@ class SchematicWidget(BaseDiagramWidget):
3531
3541
  pass
3532
3542
  else:
3533
3543
  error_msg("Branch results length differs from the number of branch results. \n"
3534
- "Did you change the numbe rof devices? If so, re-run the simulation.")
3544
+ "Did you change the number of devices? If so, re-run the simulation.")
3535
3545
  return
3536
3546
 
3547
+ # VSC lines
3548
+ if vsc_Pf is not None:
3549
+
3550
+ vsc_sending_power_norm = np.abs(vsc_Pt + 1j * vsc_Qt) / (max_flow + 1e-20)
3551
+
3552
+ if self.circuit.get_vsc_number() == len(vsc_Pf):
3553
+ for i, elm in enumerate(self.circuit.vsc_devices):
3554
+
3555
+ # try to find the diagram object of the DB object
3556
+ graphic_object = self.graphics_manager.query(elm)
3557
+
3558
+ if graphic_object:
3559
+
3560
+ if vsc_active[i]:
3561
+
3562
+ if use_flow_based_width:
3563
+ w = int(np.floor(
3564
+ min_branch_width + vsc_sending_power_norm[i] * (
3565
+ max_branch_width - min_branch_width)))
3566
+ else:
3567
+ w = graphic_object.pen_width
3568
+
3569
+ if elm.active:
3570
+ style = Qt.PenStyle.SolidLine
3571
+
3572
+ a = 1
3573
+ if cmap == palettes.Colormaps.Green2Red:
3574
+ b, g, r = palettes.green_to_red_bgr(abs(vsc_loading[i]))
3575
+
3576
+ elif cmap == palettes.Colormaps.Heatmap:
3577
+ b, g, r = palettes.heatmap_palette_bgr(abs(vsc_loading[i]))
3578
+
3579
+ elif cmap == palettes.Colormaps.TSO:
3580
+ b, g, r = palettes.tso_line_palette_bgr(elm.get_max_bus_nominal_voltage(),
3581
+ abs(vsc_loading[i]))
3582
+
3583
+ else:
3584
+ r, g, b, a = loading_cmap(abs(vsc_loading[i]))
3585
+ r *= 255
3586
+ g *= 255
3587
+ b *= 255
3588
+ a *= 255
3589
+
3590
+ color = QColor(r, g, b, a)
3591
+ else:
3592
+ style = Qt.PenStyle.DashLine
3593
+ color = QColor(115, 115, 115, 255) # gray
3594
+
3595
+ tooltip = str(i) + ': ' + elm.name
3596
+ tooltip += '\n' + loading_label + ': ' + "{:10.4f}".format(
3597
+ abs(vsc_loading[i]) * 100) + ' [%]'
3598
+
3599
+ tooltip += '\nPower (from):\t' + "{:10.4f}".format(vsc_Pf[i]) + ' [MW]'
3600
+
3601
+ if vsc_losses is not None:
3602
+ tooltip += '\nPower (to):\t' + "{:10.4f}".format(vsc_Pt[i]) + ' [MW]'
3603
+ tooltip += '\nPower (to):\t' + "{:10.4f}".format(vsc_Qt[i]) + ' [Mvar]'
3604
+ tooltip += '\nLosses: \t\t' + "{:10.4f}".format(vsc_losses[i]) + ' [MW]'
3605
+ graphic_object.set_arrows_with_power(Sf=vsc_Pf[i] + 1j * 0.0, St=vsc_Pt[i] + 1j * vsc_Qt[i])
3606
+ else:
3607
+ graphic_object.set_arrows_with_power(Sf=vsc_Pf[i] + 1j * 0.0, St=-vsc_Pf[i] + 1j * vsc_Qt[i])
3608
+
3609
+ graphic_object.setToolTipText(tooltip)
3610
+ graphic_object.set_colour(color, w, style)
3611
+ else:
3612
+ w = graphic_object.pen_width
3613
+ style = Qt.PenStyle.DashLine
3614
+ color = QColor(115, 115, 115, 255) # gray
3615
+ graphic_object.set_pen(QPen(color, w, style))
3616
+ else:
3617
+ # No diagram object
3618
+ pass
3619
+ else:
3620
+ error_msg("VSC results length differs from the number of VSC results. \n"
3621
+ "Did you change the number of devices? If so, re-run the simulation.")
3622
+
3537
3623
  # HVDC lines
3538
3624
  if hvdc_Pf is not None:
3539
3625
 
@@ -3607,7 +3693,7 @@ class SchematicWidget(BaseDiagramWidget):
3607
3693
  pass
3608
3694
  else:
3609
3695
  error_msg("HVDC results length differs from the number of HVDC results. \n"
3610
- "Did you change the numbe rof devices? If so, re-run the simulation.")
3696
+ "Did you change the number of devices? If so, re-run the simulation.")
3611
3697
 
3612
3698
  # fluid paths
3613
3699
  if fluid_path_flow is not None:
@@ -4343,7 +4429,7 @@ def generate_schematic_diagram(buses: List[Bus],
4343
4429
  if prog_func is not None:
4344
4430
  prog_func((i + 1) / nn * 100.0)
4345
4431
 
4346
- if not bus.is_internal: # 3w transformer buses are not represented
4432
+ if not bus.internal: # 3w transformer buses are not represented
4347
4433
 
4348
4434
  # correct possible nonsense
4349
4435
  if np.isnan(bus.y):
@@ -484,9 +484,6 @@ class BaseDiagramWidget(QSplitter):
484
484
  self.draw()
485
485
 
486
486
  def colour_results(self,
487
- buses: List[Bus],
488
- branches: List[BRANCH_TYPES],
489
- hvdc_lines: List[HvdcLine],
490
487
  Sbus: CxVec,
491
488
  bus_active: IntVec,
492
489
  Sf: CxVec,
@@ -502,9 +499,21 @@ class BaseDiagramWidget(QSplitter):
502
499
  hvdc_loading: Vec = None,
503
500
  hvdc_active: IntVec = None,
504
501
  loading_label: str = 'loading',
502
+ vsc_Pf: Vec = None,
503
+ vsc_Pt: Vec = None,
504
+ vsc_Qt: Vec = None,
505
+ vsc_losses: Vec = None,
506
+ vsc_loading: Vec = None,
507
+ vsc_active: IntVec = None,
505
508
  ma: Vec = None,
506
509
  theta: Vec = None,
507
- Beq: Vec = None,
510
+ fluid_node_p2x_flow: Vec = None,
511
+ fluid_node_current_level: Vec = None,
512
+ fluid_node_spillage: Vec = None,
513
+ fluid_node_flow_in: Vec = None,
514
+ fluid_node_flow_out: Vec = None,
515
+ fluid_path_flow: Vec = None,
516
+ fluid_injection_flow: Vec = None,
508
517
  use_flow_based_width: bool = False,
509
518
  min_branch_width: int = 5,
510
519
  max_branch_width=5,
@@ -513,9 +522,6 @@ class BaseDiagramWidget(QSplitter):
513
522
  cmap: palettes.Colormaps = None):
514
523
  """
515
524
 
516
- :param buses:
517
- :param branches:
518
- :param hvdc_lines:
519
525
  :param Sbus:
520
526
  :param bus_active:
521
527
  :param Sf:
@@ -531,15 +537,28 @@ class BaseDiagramWidget(QSplitter):
531
537
  :param hvdc_loading:
532
538
  :param hvdc_active:
533
539
  :param loading_label:
540
+ :param vsc_Pf:
541
+ :param vsc_Pt:
542
+ :param vsc_Qt:
543
+ :param vsc_losses:
544
+ :param vsc_loading:
545
+ :param vsc_active:
534
546
  :param ma:
535
547
  :param theta:
536
- :param Beq:
548
+ :param fluid_node_p2x_flow:
549
+ :param fluid_node_current_level:
550
+ :param fluid_node_spillage:
551
+ :param fluid_node_flow_in:
552
+ :param fluid_node_flow_out:
553
+ :param fluid_path_flow:
554
+ :param fluid_injection_flow:
537
555
  :param use_flow_based_width:
538
556
  :param min_branch_width:
539
557
  :param max_branch_width:
540
558
  :param min_bus_width:
541
559
  :param max_bus_width:
542
560
  :param cmap:
561
+ :return:
543
562
  """
544
563
  pass
545
564
 
@@ -3,7 +3,7 @@
3
3
  ################################################################################
4
4
  ## Form generated from reading UI file 'ConsoleLog.ui'
5
5
  ##
6
- ## Created by: Qt User Interface Compiler version 6.6.2
6
+ ## Created by: Qt User Interface Compiler version 6.7.2
7
7
  ##
8
8
  ## WARNING! All changes made in this file will be lost when recompiling UI file!
9
9
  ################################################################################
@@ -28,7 +28,7 @@ class Ui_mainWindow(object):
28
28
  mainWindow.resize(516, 327)
29
29
  mainWindow.setBaseSize(QSize(0, 0))
30
30
  icon = QIcon()
31
- icon.addFile(u":/Program icon/GridCal_icon.svg", QSize(), QIcon.Normal, QIcon.Off)
31
+ icon.addFile(u":/Program icon/GridCal_icon.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
32
32
  mainWindow.setWindowIcon(icon)
33
33
  mainWindow.setIconSize(QSize(24, 24))
34
34
  mainWindow.setDocumentMode(False)
@@ -37,7 +37,7 @@ class Ui_mainWindow(object):
37
37
  self.actionSave = QAction(mainWindow)
38
38
  self.actionSave.setObjectName(u"actionSave")
39
39
  icon1 = QIcon()
40
- icon1.addFile(u":/Icons/icons/savec.svg", QSize(), QIcon.Normal, QIcon.Off)
40
+ icon1.addFile(u":/Icons/icons/savec.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
41
41
  self.actionSave.setIcon(icon1)
42
42
  self.centralwidget = QWidget(mainWindow)
43
43
  self.centralwidget.setObjectName(u"centralwidget")