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.
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/about_dialogue.py +2 -2
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/AnalysisDialogue.py +1 -1
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/object_plot_analysis.py +15 -11
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +1 -1
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +12 -2
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +109 -23
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/base_diagram_widget.py +27 -8
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/ConsoleLog.py +3 -3
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/MainWindow.py +405 -404
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +1 -1
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +82 -122
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/objects.py +2 -1
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/base_gui.py +2 -1
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/io.py +66 -48
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/simulations.py +9 -8
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/icons_rc.py +203 -203
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/models_dialogue.py +3 -3
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/pandas_model.py +6 -11
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_color.py +15 -18
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +17 -15
- gridcal-5.3.0/GridCal/__version__.py +27 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/plugins.py +6 -6
- {gridcal-5.2.12 → gridcal-5.3.0}/PKG-INFO +1 -1
- gridcal-5.2.12/GridCal/__version__.py +0 -49
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ExecuteGridCal.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/object_select_window.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Visualization/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Visualization/visualization.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Widgets/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/associations_model.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/console_widget.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/general_dialogues.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/gui_functions.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/messages.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/object_model.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/plot_config.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/profiles_model.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/results_model.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/table_view_header_wrap.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/themes.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/update_gui_all.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/update_gui_common.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Gui/wrappable_table_model.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/LICENSE.txt +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/export_results_driver.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/file_handler.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/server_driver.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/session.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/Session/synchronization_driver.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/GridCal.ico +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/GridCal.svg +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/__init__.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/cables.csv +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/sequence_lines.csv +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/transformers.csv +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/data/wires.csv +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/templates.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/GridCal/update.py +0 -0
- {gridcal-5.2.12 → gridcal-5.3.0}/setup.cfg +0 -0
- {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__
|
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
|
-
|
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.
|
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
|
-
|
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
|
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
|
-
|
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 /
|
1419
|
+
upper=str(1.0 / condition_number_threshold))
|
1417
1420
|
|
1418
|
-
rcond, unstable = sparse_instability_lu_test(
|
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(
|
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(
|
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(
|
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.
|
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.
|
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.
|
3450
|
-
for i, branch in enumerate(self.circuit.
|
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
|
-
|
3508
|
-
|
3509
|
-
|
3510
|
-
|
3511
|
-
|
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
|
-
|
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
|
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
|
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.
|
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
|
-
|
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
|
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
|
+
## 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")
|