GridCal 5.1.56__tar.gz → 5.1.58__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 (286) hide show
  1. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/CascadingSteps/cascading_steps.py +6 -6
  2. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +6 -6
  3. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +17 -1
  4. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +2 -2
  5. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +5 -3
  6. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +47 -1
  7. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +2 -2
  8. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +105 -60
  9. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +10 -2
  10. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +16 -2
  11. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +3 -2
  12. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/simulations.py +5 -3
  13. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +9 -3
  14. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/__version__.py +1 -1
  15. {GridCal-5.1.56 → GridCal-5.1.58}/PKG-INFO +1 -1
  16. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ExecuteGridCal.py +0 -0
  17. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  18. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  19. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  20. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  21. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  22. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  23. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Analysis/__init__.py +0 -0
  24. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Analysis/gui.py +0 -0
  25. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  26. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  27. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  28. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  29. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  30. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  31. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  32. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  33. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  34. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  35. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  36. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  37. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  38. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  39. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  40. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
  41. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  42. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  43. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  44. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  45. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  46. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
  47. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
  48. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  49. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  50. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
  51. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  52. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  53. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  54. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  55. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
  56. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
  57. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
  58. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
  59. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
  60. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
  61. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
  62. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  63. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  64. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  65. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  66. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  67. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  68. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  69. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  70. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +0 -0
  71. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  72. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  73. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  74. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  75. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  76. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  77. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  78. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  79. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
  80. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  81. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  82. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  83. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  84. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  85. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  86. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  87. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  88. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  89. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  90. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  91. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  92. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  93. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  94. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  95. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  96. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  97. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  98. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  99. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  100. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  101. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  102. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  103. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  104. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  105. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  106. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  107. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  108. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/__init__.py +0 -0
  109. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
  110. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  111. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  112. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  113. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  114. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  115. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/GridGenerator/gui.py +0 -0
  116. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  117. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  118. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  119. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  120. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  121. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  122. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  123. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  124. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  125. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  126. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  127. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  128. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  129. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  130. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/GridCalMain.py +0 -0
  131. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/MainWindow.py +0 -0
  132. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  133. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  134. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  135. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  136. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  137. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  138. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  139. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  140. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  141. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  142. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  143. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  144. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  145. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  146. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  147. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/SubClasses/io.py +0 -0
  148. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/__init__.py +0 -0
  149. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/icons_rc.py +0 -0
  150. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/object_select_window.py +0 -0
  151. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Main/update_gui_file.py +0 -0
  152. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  153. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  154. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  155. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  156. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  157. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  158. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  159. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  160. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  161. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  162. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  163. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  164. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  165. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  166. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  167. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  168. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  169. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  170. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  171. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  172. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  173. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  174. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  175. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  176. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  177. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  178. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
  179. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
  180. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
  181. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
  182. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  183. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  184. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  185. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  186. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  187. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  188. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  189. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  190. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  191. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  192. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
  193. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  194. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  195. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  196. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
  197. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TowerBuilder/test_.py +0 -0
  198. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  199. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  200. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  201. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  202. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  203. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  204. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Visualization/__init__.py +0 -0
  205. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Visualization/visualization.py +0 -0
  206. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Widgets/__init__.py +0 -0
  207. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  208. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  209. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  210. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  211. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  212. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  213. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  214. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/__init__.py +0 -0
  215. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/associations_model.py +0 -0
  216. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/console_widget.py +0 -0
  217. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/general_dialogues.py +0 -0
  218. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/gui_functions.py +0 -0
  219. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/messages.py +0 -0
  220. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/object_model.py +0 -0
  221. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/pandas_model.py +0 -0
  222. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/plot_config.py +0 -0
  223. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/profiles_model.py +0 -0
  224. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/results_model.py +0 -0
  225. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/table_view_header_wrap.py +0 -0
  226. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/themes.py +0 -0
  227. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/update_gui_all.py +0 -0
  228. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/update_gui_common.py +0 -0
  229. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Gui/wrappable_table_model.py +0 -0
  230. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/LICENSE.txt +0 -0
  231. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Session/__init__.py +0 -0
  232. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Session/export_results_driver.py +0 -0
  233. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Session/file_handler.py +0 -0
  234. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Session/server_driver.py +0 -0
  235. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Session/session.py +0 -0
  236. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/Session/synchronization_driver.py +0 -0
  237. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/__init__.py +0 -0
  238. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  239. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  240. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  241. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  242. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  243. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  244. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  245. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  246. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  247. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  248. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  249. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  250. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  251. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  252. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  253. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  254. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  255. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  256. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  257. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  258. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  259. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  260. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  261. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  262. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  263. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  264. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  265. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  266. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  267. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  268. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  269. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  270. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  271. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  272. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  273. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  274. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  275. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  276. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/__init__.py +0 -0
  277. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/data/__init__.py +0 -0
  278. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/data/cables.csv +0 -0
  279. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/data/sequence_lines.csv +0 -0
  280. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/data/transformers.csv +0 -0
  281. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/data/wires.csv +0 -0
  282. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/plugins.py +0 -0
  283. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/templates.py +0 -0
  284. {GridCal-5.1.56 → GridCal-5.1.58}/GridCal/update.py +0 -0
  285. {GridCal-5.1.56 → GridCal-5.1.58}/setup.cfg +0 -0
  286. {GridCal-5.1.56 → GridCal-5.1.58}/setup.py +0 -0
@@ -130,9 +130,9 @@ class CascadingStepsGUI(QtWidgets.QDialog):
130
130
  self.gridcal_main.post_cascade(idx=idx.row())
131
131
 
132
132
 
133
- if __name__ == "__main__":
134
- app = QtWidgets.QApplication(sys.argv)
135
- window = CascadingStepsGUI()
136
- window.resize(1.61 * 700.0, 600.0) # golden ratio
137
- window.show()
138
- sys.exit(app.exec())
133
+ # if __name__ == "__main__":
134
+ # app = QtWidgets.QApplication(sys.argv)
135
+ # window = CascadingStepsGUI()
136
+ # window.resize(1.61 * 700, 600) # golden ratio
137
+ # window.show()
138
+ # sys.exit(app.exec())
@@ -115,9 +115,9 @@ class ContingencyPlannerGUI(QtWidgets.QDialog):
115
115
  self.close()
116
116
 
117
117
 
118
- if __name__ == "__main__":
119
- app = QtWidgets.QApplication(sys.argv)
120
- window = ContingencyPlannerGUI()
121
- window.resize(1.61 * 700.0, 600.0) # golden ratio
122
- window.show()
123
- sys.exit(app.exec())
118
+ # if __name__ == "__main__":
119
+ # app = QtWidgets.QApplication(sys.argv)
120
+ # window = ContingencyPlannerGUI()
121
+ # window.resize(1.61 * 700.0, 600.0) # golden ratio
122
+ # window.show()
123
+ # sys.exit(app.exec())
@@ -1,3 +1,19 @@
1
+ # GridCal
2
+ # Copyright (C) 2015 - 2024 Santiago Peñate Vera
3
+ #
4
+ # This program is free software; you can redistribute it and/or
5
+ # modify it under the terms of the GNU Lesser General Public
6
+ # License as published by the Free Software Foundation; either
7
+ # version 3 of the License, or (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public License
15
+ # along with this program; if not, write to the Free Software Foundation,
16
+ # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1
17
  import os
2
18
  import sys
3
19
  import pandas as pd
@@ -188,7 +204,7 @@ class CoordinatesInputGUI(QtWidgets.QDialog):
188
204
  self.assigned_count: int = 0
189
205
 
190
206
  # dataFrame
191
- self.original_data_frame: pd.DataFrame = None
207
+ self.original_data_frame: pd.DataFrame | None = None
192
208
 
193
209
  # initialize the objectives list
194
210
  self.objects: List[Bus] = list_of_objects
@@ -35,7 +35,7 @@ class DcLineEditor(QDialog):
35
35
  """
36
36
  DcLineEditor
37
37
  """
38
- def __init__(self, branch: DcLine, Sbase=100, templates=None, current_template=None):
38
+ def __init__(self, branch: DcLine, Sbase: float = 100.0, templates=None, current_template=None):
39
39
  """
40
40
  Line Editor constructor
41
41
  :param branch: Branch object to update
@@ -351,7 +351,7 @@ class DcLineGraphicItem(LineGraphicTemplateItem):
351
351
  """
352
352
  Sbase = self.editor.circuit.Sbase
353
353
 
354
- dlg = DcLineEditor(self.api_object, Sbase)
354
+ dlg = DcLineEditor(branch=self.api_object, Sbase=Sbase)
355
355
  if dlg.exec_():
356
356
  pass
357
357
 
@@ -14,6 +14,8 @@
14
14
  # You should have received a copy of the GNU Lesser General Public License
15
15
  # along with this program; if not, write to the Free Software Foundation,
16
16
  # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
+ from __future__ import annotations
18
+
17
19
  import numpy as np
18
20
 
19
21
  from typing import Union, List
@@ -33,8 +35,8 @@ class LineEditor(QDialog):
33
35
  line: Line,
34
36
  Sbase=100,
35
37
  frequency=50,
36
- templates: Union[List[Union[SequenceLineType, OverheadLineType, UndergroundLineType]], None] = None,
37
- current_template=None):
38
+ templates: Union[List[SequenceLineType | OverheadLineType | UndergroundLineType], None] = None,
39
+ current_template: SequenceLineType | OverheadLineType | UndergroundLineType | None = None):
38
40
  """
39
41
  Line Editor constructor
40
42
  :param line: Branch object to update
@@ -120,7 +122,7 @@ class LineEditor(QDialog):
120
122
  x_ohm = self.current_template.X1
121
123
  b_us = self.current_template.Bsh1
122
124
 
123
- except:
125
+ except ValueError:
124
126
  pass
125
127
 
126
128
  # load template
@@ -27,6 +27,8 @@ from GridCal.Gui.Diagrams.SchematicWidget.terminal_item import RoundTerminalItem
27
27
  from GridCal.Gui.Diagrams.SchematicWidget.Branches.winding_graphics import WindingGraphicItem
28
28
  from GridCal.Gui.messages import yes_no_question
29
29
  from GridCalEngine.Devices.Branches.transformer3w import Transformer3W
30
+ from GridCalEngine.Devices.Substation.bus import Bus
31
+ from GridCalEngine.Devices.Substation.connectivity_node import ConnectivityNode
30
32
  from GridCalEngine.enumerations import DeviceType
31
33
  from GridCal.Gui.gui_functions import add_menu_entry
32
34
 
@@ -318,7 +320,7 @@ class Transformer3WGraphicItem(QGraphicsRectItem):
318
320
 
319
321
  raise Exception("Unknown winding")
320
322
 
321
- def set_connection(self, i: int, bus, conn: WindingGraphicItem, set_voltage: bool = True):
323
+ def set_connection(self, i: int, bus: Bus, conn: WindingGraphicItem, set_voltage: bool = True):
322
324
  """
323
325
  Create the connection with a bus
324
326
  :param i: winding index 0-2
@@ -362,6 +364,50 @@ class Transformer3WGraphicItem(QGraphicsRectItem):
362
364
  self.update_conn()
363
365
  self.mousePressEvent(None)
364
366
 
367
+ def set_connection_cn(self, i: int, cn: ConnectivityNode, conn: WindingGraphicItem, set_voltage: bool = True):
368
+ """
369
+ Create the connection with a bus
370
+ :param i: winding index 0-2
371
+ :param cn: ConnectivityNode object to connect to
372
+ :param conn: Connection graphical object [LineGraphicItem]
373
+ :param set_voltage: Set voltage in the object (Transformer3W and Windings)
374
+ """
375
+ if i == 0:
376
+ self.api_object.cn1 = cn
377
+ if set_voltage:
378
+ self.api_object.V1 = cn.Vnom
379
+ self.connection_lines[0] = conn
380
+ self.terminals[0].setZValue(-1)
381
+ conn.api_object = self.api_object.winding1
382
+ conn.winding_number = 0
383
+
384
+ elif i == 1:
385
+ self.api_object.bus2 = cn
386
+ if set_voltage:
387
+ self.api_object.V2 = cn.Vnom
388
+ self.connection_lines[1] = conn
389
+ self.terminals[1].setZValue(-1)
390
+ conn.api_object = self.api_object.winding2
391
+ conn.winding_number = 1
392
+
393
+ elif i == 2:
394
+ self.api_object.bus3 = cn
395
+ if set_voltage:
396
+ self.api_object.V3 = cn.Vnom
397
+ self.connection_lines[2] = conn
398
+ self.terminals[2].setZValue(-1)
399
+ conn.api_object = self.api_object.winding3
400
+ conn.winding_number = 2
401
+ else:
402
+ raise Exception('Unsupported winding index {}'.format(i))
403
+
404
+ # set the reverse lookup
405
+ conn.parent_tr3_graphics_item = self
406
+
407
+ # update the connection placement
408
+ self.update_conn()
409
+ self.mousePressEvent(None)
410
+
365
411
  def remove_winding(self, i: int):
366
412
  """
367
413
  Remove winding by index
@@ -587,7 +587,7 @@ class BusGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
587
587
  self.api_object.active = not self.api_object.active
588
588
 
589
589
  # change the Branches state (snapshot)
590
- for host in self._terminal._hosting_connections:
590
+ for host in self._terminal.hosting_connections:
591
591
  if host.api_object is not None:
592
592
  host.set_enable(val=self.api_object.active)
593
593
 
@@ -602,7 +602,7 @@ class BusGraphicItem(GenericDiagramWidget, QtWidgets.QGraphicsRectItem):
602
602
  self.editor.set_active_status_to_profile(self.api_object, override_question=True)
603
603
 
604
604
  # change the Branches state (time series)
605
- for host in self._terminal._hosting_connections:
605
+ for host in self._terminal.hosting_connections:
606
606
  if host.api_object is not None:
607
607
  self.editor.set_active_status_to_profile(host.api_object, override_question=True)
608
608
 
@@ -661,61 +661,6 @@ class SchematicWidget(BaseDiagramWidget):
661
661
  # bus_dict[idtag] = graphic_object
662
662
  self.graphics_manager.add_device(elm=location.api_object, graphic=graphic_object)
663
663
 
664
- elif category == DeviceType.Transformer3WDevice.value:
665
-
666
- for idtag, location in points_group.locations.items():
667
-
668
- # search for the api object, because it may be created already
669
- graphic_object = self.graphics_manager.query(elm=location.api_object)
670
-
671
- if graphic_object is None:
672
- elm: Transformer3W = location.api_object
673
-
674
- graphic_object = self.create_transformer_3w_graphics(elm=elm,
675
- x=location.x,
676
- y=location.y)
677
- self.add_to_scene(graphic_object=graphic_object)
678
-
679
- bus_1_graphic = self.graphics_manager.query(elm.bus1)
680
-
681
- if bus_1_graphic is not None:
682
- conn1 = WindingGraphicItem(from_port=graphic_object.terminals[0],
683
- to_port=bus_1_graphic.get_terminal(),
684
- editor=self)
685
-
686
- graphic_object.set_connection(i=0, bus=elm.bus1, conn=conn1, set_voltage=False)
687
- self.add_to_scene(graphic_object=conn1)
688
- self.graphics_manager.add_device(elm=elm.winding1, graphic=conn1)
689
-
690
- bus_2_graphic = self.graphics_manager.query(elm.bus2)
691
- if bus_2_graphic is not None:
692
- conn2 = WindingGraphicItem(from_port=graphic_object.terminals[1],
693
- to_port=bus_2_graphic.get_terminal(),
694
- editor=self)
695
- graphic_object.set_connection(i=1, bus=elm.bus2, conn=conn2, set_voltage=False)
696
- self.add_to_scene(graphic_object=conn2)
697
- self.graphics_manager.add_device(elm=elm.winding2, graphic=conn2)
698
-
699
- bus_3_graphic = self.graphics_manager.query(elm.bus3)
700
- if bus_3_graphic is not None:
701
- conn3 = WindingGraphicItem(from_port=graphic_object.terminals[2],
702
- to_port=bus_3_graphic.get_terminal(),
703
- editor=self)
704
- graphic_object.set_connection(i=2, bus=elm.bus3, conn=conn3, set_voltage=False)
705
- self.add_to_scene(graphic_object=conn3)
706
- self.graphics_manager.add_device(elm=elm.winding3, graphic=conn3)
707
-
708
- graphic_object.set_position(x=location.x, y=location.y)
709
- graphic_object.change_size(h=location.h, w=location.w)
710
-
711
- graphic_object.update_conn()
712
- self.graphics_manager.add_device(elm=elm, graphic=graphic_object)
713
-
714
- # register the windings for the branches pass
715
- # windings_dict[elm.winding1.idtag] = conn1
716
- # windings_dict[elm.winding2.idtag] = conn2
717
- # windings_dict[elm.winding3.idtag] = conn3
718
-
719
664
  elif category == DeviceType.FluidNodeDevice.value:
720
665
 
721
666
  for idtag, location in points_group.locations.items():
@@ -773,10 +718,11 @@ class SchematicWidget(BaseDiagramWidget):
773
718
  injections_by_tpe=inj_dev_by_cn.get(location.api_object, dict())
774
719
  )
775
720
 
776
- # graphic_object.change_size(w=location.w)
777
-
778
721
  # add buses reference for later
779
722
  self.graphics_manager.add_device(elm=location.api_object, graphic=graphic_object)
723
+ else:
724
+ # is internal
725
+ pass
780
726
 
781
727
  elif category == DeviceType.BusBarDevice.value and prefer_node_breaker:
782
728
 
@@ -809,6 +755,51 @@ class SchematicWidget(BaseDiagramWidget):
809
755
  # pass for now...
810
756
  pass
811
757
 
758
+ # add 3W transformers after the node devices
759
+ for category, points_group in diagram.data.items():
760
+
761
+ if category == DeviceType.Transformer3WDevice.value:
762
+
763
+ for idtag, location in points_group.locations.items():
764
+
765
+ # search for the api object, because it may be created already
766
+ graphic_object = self.graphics_manager.query(elm=location.api_object)
767
+
768
+ if graphic_object is None:
769
+ elm: Transformer3W = location.api_object
770
+
771
+ graphic_object = self.create_transformer_3w_graphics(elm=elm,
772
+ x=location.x,
773
+ y=location.y)
774
+ self.add_to_scene(graphic_object=graphic_object)
775
+
776
+ w1_graphics = self.add_api_winding(branch=elm.winding1,
777
+ from_port=graphic_object.terminals[0],
778
+ draw_labels=location.draw_labels,
779
+ prefer_node_breaker=prefer_node_breaker,
780
+ logger=logger)
781
+ self.graphics_manager.add_device(elm=elm.winding1, graphic=w1_graphics)
782
+
783
+ w2_graphics = self.add_api_winding(branch=elm.winding2,
784
+ from_port=graphic_object.terminals[1],
785
+ draw_labels=location.draw_labels,
786
+ prefer_node_breaker=prefer_node_breaker,
787
+ logger=logger)
788
+ self.graphics_manager.add_device(elm=elm.winding2, graphic=w2_graphics)
789
+
790
+ w3_graphics = self.add_api_winding(branch=elm.winding3,
791
+ from_port=graphic_object.terminals[2],
792
+ draw_labels=location.draw_labels,
793
+ prefer_node_breaker=prefer_node_breaker,
794
+ logger=logger)
795
+ self.graphics_manager.add_device(elm=elm.winding3, graphic=w3_graphics)
796
+
797
+ graphic_object.set_position(x=location.x, y=location.y)
798
+ graphic_object.change_size(h=location.h, w=location.w)
799
+
800
+ graphic_object.update_conn()
801
+ self.graphics_manager.add_device(elm=elm, graphic=graphic_object)
802
+
812
803
  # add the rest of the branches
813
804
  for category, points_group in diagram.data.items():
814
805
 
@@ -2203,11 +2194,35 @@ class SchematicWidget(BaseDiagramWidget):
2203
2194
  # the from bu is found, return its terminal
2204
2195
  to_port = bus_graphic1.get_terminal()
2205
2196
 
2206
- # from_port = self.find_port(port=None, bus=branch.bus_from, cn=branch.cn_from)
2207
- # to_port = self.find_port(port=None, bus=branch.bus_to, cn=branch.cn_to)
2208
-
2209
2197
  return from_port, to_port
2210
2198
 
2199
+ def find_to_port(self,
2200
+ branch: BRANCH_TYPES,
2201
+ prefer_node_breaker: bool,
2202
+ logger: Logger) -> OPTIONAL_PORT:
2203
+ """
2204
+ Find the preferred set of ports for drawing
2205
+ :param branch: some API branch
2206
+ :param prefer_node_breaker:
2207
+ :param logger:
2208
+ :return: OPTIONAL_PORT, OPTIONAL_PORT
2209
+ """
2210
+
2211
+ obj_from, obj_to, is_ok = branch.get_from_and_to_objects(t_idx=None,
2212
+ logger=logger,
2213
+ prefer_node_breaker=prefer_node_breaker)
2214
+
2215
+ # Bus provided, search its graphics
2216
+ bus_graphic1 = self.graphics_manager.query_preferring_busbars(obj_to)
2217
+ if bus_graphic1 is None:
2218
+ # could not find any graphics :(
2219
+ to_port = None
2220
+ else:
2221
+ # the from bu is found, return its terminal
2222
+ to_port = bus_graphic1.get_terminal()
2223
+
2224
+ return to_port
2225
+
2211
2226
  def add_api_branch(self,
2212
2227
  branch: BRANCH_TYPES,
2213
2228
  new_graphic_func: Callable[[Union[BarTerminalItem, RoundTerminalItem],
@@ -2241,6 +2256,10 @@ class SchematicWidget(BaseDiagramWidget):
2241
2256
  from_port, to_port = self.find_ports(branch=branch,
2242
2257
  prefer_node_breaker=prefer_node_breaker,
2243
2258
  logger=logger)
2259
+ elif from_port is not None and to_port is None:
2260
+ to_port = self.find_to_port(branch=branch,
2261
+ prefer_node_breaker=prefer_node_breaker,
2262
+ logger=logger)
2244
2263
 
2245
2264
  if from_port is not None and to_port is not None and (from_port != to_port):
2246
2265
 
@@ -2450,6 +2469,32 @@ class SchematicWidget(BaseDiagramWidget):
2450
2469
  draw_labels=draw_labels,
2451
2470
  logger=logger)
2452
2471
 
2472
+ def add_api_winding(self,
2473
+ branch: Winding,
2474
+ from_port: OPTIONAL_PORT = None,
2475
+ to_port: OPTIONAL_PORT = None,
2476
+ draw_labels: bool = True,
2477
+ prefer_node_breaker: bool = False,
2478
+ logger: Logger = Logger()) -> Union[WindingGraphicItem, None]:
2479
+ """
2480
+ add API branch to the Scene
2481
+ :param branch: Branch instance
2482
+ :param from_port: Connection port from (optional)
2483
+ :param to_port: Connection port to (optional)
2484
+ :param draw_labels: Draw labels?
2485
+ :param prefer_node_breaker: Prefer node breaker representation?
2486
+ :param logger: Logger
2487
+ :return: WindingGraphicItem or None
2488
+ """
2489
+
2490
+ return self.add_api_branch(branch=branch,
2491
+ new_graphic_func=WindingGraphicItem,
2492
+ from_port=from_port,
2493
+ to_port=to_port,
2494
+ prefer_node_breaker=prefer_node_breaker,
2495
+ draw_labels=draw_labels,
2496
+ logger=logger)
2497
+
2453
2498
  def add_api_switch(self,
2454
2499
  branch: Switch,
2455
2500
  from_port: OPTIONAL_PORT = None,
@@ -51,13 +51,13 @@ class BarTerminalItem(QGraphicsRectItem):
51
51
  """
52
52
 
53
53
  QGraphicsRectItem.__init__(self, QRectF(-6.0, -6.0, h, w), parent)
54
- self.setCursor(QCursor(Qt.CrossCursor))
54
+ self.setCursor(QCursor(Qt.CursorShape.CrossCursor))
55
55
 
56
56
  # Properties:
57
57
  self.color = ACTIVE['color']
58
58
  self.pen_width = 2
59
59
  self.style = ACTIVE['style']
60
- self.setBrush(Qt.darkGray)
60
+ self.setBrush(Qt.GlobalColor.darkGray)
61
61
  self.setPen(QPen(self.color, self.pen_width, self.style))
62
62
 
63
63
  # terminal parent object
@@ -143,6 +143,14 @@ class BarTerminalItem(QGraphicsRectItem):
143
143
  else:
144
144
  print(f'No such hosting connection {self.name} -> {graphic_obj}')
145
145
 
146
+ @property
147
+ def hosting_connections(self):
148
+ """
149
+ Getter for hosting connections
150
+ :return:
151
+ """
152
+ return self._hosting_connections
153
+
146
154
  def update(self, rect: Union[QRectF, QRect] = ...):
147
155
  """
148
156
 
@@ -22,7 +22,7 @@ from GridCal.Gui.pandas_model import PandasModel
22
22
  from GridCal.Gui.Main.SubClasses.Server.server import ServerMain
23
23
  import GridCal.Gui.gui_functions as gf
24
24
 
25
- from GridCalEngine.enumerations import EngineType
25
+ from GridCalEngine.enumerations import EngineType, BranchImpedanceMode
26
26
  from GridCalEngine.DataStructures.numerical_circuit import compile_numerical_circuit_at
27
27
 
28
28
 
@@ -138,7 +138,21 @@ class CompiledArraysMain(ServerMain):
138
138
  engine = self.get_preferred_engine()
139
139
 
140
140
  if engine == EngineType.GridCal:
141
- numerical_circuit = compile_numerical_circuit_at(circuit=self.circuit, t_idx=None)
141
+
142
+ if self.ui.apply_impedance_tolerances_checkBox.isChecked():
143
+ branch_impedance_tolerance_mode = BranchImpedanceMode.Upper
144
+ else:
145
+ branch_impedance_tolerance_mode = BranchImpedanceMode.Specified
146
+
147
+ numerical_circuit = compile_numerical_circuit_at(
148
+ circuit=self.circuit,
149
+ t_idx=None,
150
+ branch_tolerance_mode=branch_impedance_tolerance_mode,
151
+ use_stored_guess=self.ui.use_voltage_guess_checkBox.isChecked(),
152
+ control_taps_phase=self.ui.control_tap_phase_checkBox.isChecked(),
153
+ control_taps_modules=self.ui.control_tap_modules_checkBox.isChecked(),
154
+ control_remote_voltage=self.ui.control_remote_voltage_checkBox.isChecked(),
155
+ )
142
156
  calculation_inputs = numerical_circuit.split_into_islands()
143
157
  self.calculation_inputs_to_display = calculation_inputs
144
158
 
@@ -26,6 +26,7 @@ from matplotlib import pyplot as plt
26
26
  from pandas.plotting import register_matplotlib_converters
27
27
 
28
28
  import GridCalEngine.Devices.Diagrams.palettes as palettes
29
+ from GridCalEngine import ContingencyOperationTypes
29
30
  from GridCalEngine.IO.file_system import tiles_path
30
31
  from GridCal.Gui.general_dialogues import (CheckListDialogue, StartEndSelectionDialogue, InputSearchDialogue,
31
32
  InputNumberDialogue, LogsDialogue)
@@ -2296,7 +2297,7 @@ class DiagramsMain(CompiledArraysMain):
2296
2297
  con = dev.Contingency(device_idtag=elm.idtag,
2297
2298
  code=elm.code,
2298
2299
  name="Contingency " + elm.name,
2299
- prop="active",
2300
+ prop=ContingencyOperationTypes.Active,
2300
2301
  value=0,
2301
2302
  group=group)
2302
2303
  self.circuit.add_contingency(con)
@@ -2335,7 +2336,7 @@ class DiagramsMain(CompiledArraysMain):
2335
2336
  ra = dev.RemedialAction(device_idtag=elm.idtag,
2336
2337
  code=elm.code,
2337
2338
  name="RA " + elm.name,
2338
- prop="active",
2339
+ prop=ContingencyOperationTypes.Active,
2339
2340
  value=0,
2340
2341
  group=ra_group)
2341
2342
  self.circuit.add_remedial_action(ra)
@@ -27,6 +27,7 @@ from PySide6 import QtGui, QtWidgets
27
27
  from matplotlib.colors import LinearSegmentedColormap
28
28
  import GridCal.Gui.gui_functions as gf
29
29
  import GridCal.Gui.Visualization.visualization as viz
30
+ from GridCal.Gui.Diagrams.SchematicWidget.Substation.bus_graphics import BusGraphicItem
30
31
  from GridCal.Gui.general_dialogues import LogsDialogue
31
32
  from GridCal.Gui.Diagrams.SchematicWidget.schematic_widget import SchematicWidget
32
33
  from GridCal.Gui.Diagrams.MapWidget.grid_map_widget import MapWidget
@@ -932,9 +933,10 @@ class SimulationsMain(TimeEventsMain):
932
933
  if isinstance(diagram_widget, SchematicWidget):
933
934
 
934
935
  for i, bus, graphic_object in diagram_widget.get_buses():
935
- if graphic_object.any_short_circuit():
936
- sel_buses.append(i)
937
- self_short_circuit_types.append(graphic_object.sc_type)
936
+ if isinstance(graphic_object, BusGraphicItem):
937
+ if graphic_object.any_short_circuit():
938
+ sel_buses.append(i)
939
+ self_short_circuit_types.append(graphic_object.sc_type)
938
940
 
939
941
  if len(sel_buses) > 1:
940
942
  error_msg("GridCal only supports one short circuit bus at the time", "Short circuit")
@@ -87,7 +87,10 @@ class SolarPvWizard(QtWidgets.QDialog):
87
87
  New solar photovoltaic wizard window
88
88
  """
89
89
 
90
- def __init__(self, time_array: List[str], peak_power: float, latitude: float, longitude: float,
90
+ def __init__(self, time_array: List[str],
91
+ peak_power: float,
92
+ latitude: float,
93
+ longitude: float,
91
94
  gen_name='', bus_name='',
92
95
  title='solar photovoltaic wizard'):
93
96
  """
@@ -103,7 +106,7 @@ class SolarPvWizard(QtWidgets.QDialog):
103
106
  self.ui.setupUi(self)
104
107
 
105
108
  self.setObjectName("self")
106
- self.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
109
+ self.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.NoContextMenu)
107
110
 
108
111
  self.is_accepted: bool = False
109
112
  self.selected_indices: List[int] = list()
@@ -175,9 +178,12 @@ if __name__ == "__main__":
175
178
  import sys
176
179
 
177
180
  app = QtWidgets.QApplication(sys.argv)
181
+ longitude = -110.9
178
182
 
179
183
  st = datetime(year=2018, month=1, day=1)
180
- time_arr = pd.to_datetime([st + timedelta(hours=i) for i in range(200)])
184
+ direction = 1.0 if longitude > 0 else -1.0
185
+ offset = direction * longitude * 24.0 / 360.0
186
+ time_arr = pd.to_datetime([st + timedelta(hours=i + offset) for i in range(200)])
181
187
 
182
188
  window = SolarPvWizard(time_array=time_arr, peak_power=20, latitude=32.2, longitude=-110.9)
183
189
  window.resize(1.61 * 700.0, 600.0) # golden ratio
@@ -16,7 +16,7 @@ import datetime
16
16
  _current_year_ = datetime.datetime.now().year
17
17
 
18
18
  # do not forget to keep a three-number version!!!
19
- __GridCal_VERSION__ = "5.1.56"
19
+ __GridCal_VERSION__ = "5.1.58"
20
20
 
21
21
  url = 'https://github.com/SanPen/GridCal'
22
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: GridCal
3
- Version: 5.1.56
3
+ Version: 5.1.58
4
4
  Summary: GridCal is a Power Systems simulation program intended for professional use and research
5
5
  Home-page: https://github.com/SanPen/GridCal
6
6
  Author: Santiago Peñate Vera et. Al.