GridCal 5.2.0__tar.gz → 5.2.1__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.0 → GridCal-5.2.1}/GridCal/Gui/Analysis/object_plot_analysis.py +50 -1
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/GridCalMain.py +2 -2
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/MainWindow.py +122 -100
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +1 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/io.py +22 -1
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/simulations.py +58 -1
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/icons_rc.py +50 -50
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/__version__.py +1 -1
- GridCal-5.2.1/GridCal/data/GridCal.ico +0 -0
- GridCal-5.2.1/GridCal/data/GridCal.svg +88 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/PKG-INFO +1 -1
- GridCal-5.2.1/setup.py +230 -0
- GridCal-5.2.0/setup.py +0 -116
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ExecuteGridCal.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Analysis/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Analysis/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Branches/new_line_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/gmt_local.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapbox.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/mapquest.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/open_street_map.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_toner.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_transport.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/stamen_watercolor.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_editor.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/object_select_window.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TowerBuilder/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Visualization/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Visualization/visualization.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Widgets/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/associations_model.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/console_widget.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/general_dialogues.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/gui_functions.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/messages.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/object_model.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/pandas_model.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/plot_config.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/profiles_model.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/results_model.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/table_view_header_wrap.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/themes.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/update_gui_all.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/update_gui_common.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Gui/wrappable_table_model.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/LICENSE.txt +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Session/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Session/export_results_driver.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Session/file_handler.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Session/server_driver.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Session/session.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/Session/synchronization_driver.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/data/__init__.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/data/cables.csv +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/data/sequence_lines.csv +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/data/transformers.csv +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/data/wires.csv +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/plugins.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/templates.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/GridCal/update.py +0 -0
- {GridCal-5.2.0 → GridCal-5.2.1}/setup.cfg +0 -0
@@ -774,6 +774,8 @@ def analyze_buses(elements: List[Bus],
|
|
774
774
|
object_type: DeviceType,
|
775
775
|
tap_min: float,
|
776
776
|
tap_max: float,
|
777
|
+
v_low: float,
|
778
|
+
v_high: float,
|
777
779
|
logger: GridErrorLog,
|
778
780
|
fixable_errors: List[FIXABLE_ERROR_TYPES]):
|
779
781
|
"""
|
@@ -782,6 +784,8 @@ def analyze_buses(elements: List[Bus],
|
|
782
784
|
:param object_type:
|
783
785
|
:param tap_min:
|
784
786
|
:param tap_max:
|
787
|
+
:param v_low:
|
788
|
+
:param v_high:
|
785
789
|
:param logger:
|
786
790
|
:param fixable_errors:
|
787
791
|
:return:
|
@@ -805,6 +809,49 @@ def analyze_buses(elements: List[Bus],
|
|
805
809
|
lower_limit=tap_min,
|
806
810
|
upper_limit=tap_max))
|
807
811
|
|
812
|
+
if elm.Vmin == 0.0:
|
813
|
+
logger.add(object_type=object_type.value,
|
814
|
+
element_name=elm.name,
|
815
|
+
element_index=i,
|
816
|
+
severity=LogSeverity.Error,
|
817
|
+
propty='Vmin',
|
818
|
+
message='Vmin = 0, that affects the nonlinear OPF',
|
819
|
+
lower="0",
|
820
|
+
val=elm.Vmin)
|
821
|
+
fixable_errors.append(FixableErrorOutOfRange(grid_element=elm,
|
822
|
+
property_name='Vmin',
|
823
|
+
value=elm.Vmin,
|
824
|
+
lower_limit=v_low,
|
825
|
+
upper_limit=v_low))
|
826
|
+
|
827
|
+
if elm.Vmax < elm.Vmin or elm.Vmax == 0:
|
828
|
+
|
829
|
+
if elm.Vmax == 0:
|
830
|
+
logger.add(object_type=object_type.value,
|
831
|
+
element_name=elm.name,
|
832
|
+
element_index=i,
|
833
|
+
severity=LogSeverity.Error,
|
834
|
+
propty='Vmax',
|
835
|
+
message=' Vmax = 0, that affects the nonlinear OPF',
|
836
|
+
lower="0",
|
837
|
+
val=elm.Vmax)
|
838
|
+
|
839
|
+
if elm.Vmax < elm.Vmin:
|
840
|
+
logger.add(object_type=object_type.value,
|
841
|
+
element_name=elm.name,
|
842
|
+
element_index=i,
|
843
|
+
severity=LogSeverity.Error,
|
844
|
+
propty='Vmax',
|
845
|
+
message=' Vmax <= Vmin, that affects the nonlinear OPF',
|
846
|
+
lower="0",
|
847
|
+
val=elm.Vmax)
|
848
|
+
|
849
|
+
fixable_errors.append(FixableErrorOutOfRange(grid_element=elm,
|
850
|
+
property_name='Vmax',
|
851
|
+
value=elm.Vmax,
|
852
|
+
lower_limit=v_high,
|
853
|
+
upper_limit=v_high))
|
854
|
+
|
808
855
|
if elm.name == '':
|
809
856
|
logger.add(object_type=object_type.value,
|
810
857
|
element_name=elm.name,
|
@@ -1219,6 +1266,8 @@ def grid_analysis(circuit: MultiCircuit,
|
|
1219
1266
|
tap_min=tap_min,
|
1220
1267
|
tap_max=tap_max,
|
1221
1268
|
logger=logger,
|
1269
|
+
v_low=v_low,
|
1270
|
+
v_high=v_high,
|
1222
1271
|
fixable_errors=fixable_errors)
|
1223
1272
|
|
1224
1273
|
analyze_lines(elements=circuit.get_lines(),
|
@@ -1353,7 +1402,7 @@ def grid_analysis(circuit: MultiCircuit,
|
|
1353
1402
|
# analyze the numerical stability
|
1354
1403
|
nc = compile_numerical_circuit_at(circuit, t_idx=None) # compile the snapshot
|
1355
1404
|
|
1356
|
-
rcond, unstable = sparse_instability_svd_test(nc.Bbus, condition_number_thrshold=1.0/condition_number_thrshold)
|
1405
|
+
rcond, unstable = sparse_instability_svd_test(nc.Bbus, condition_number_thrshold=1.0 / condition_number_thrshold)
|
1357
1406
|
|
1358
1407
|
if unstable:
|
1359
1408
|
logger.add(object_type='matrix',
|
@@ -25,7 +25,7 @@ This class is the handler of the main gui of GridCal.
|
|
25
25
|
# Main Window
|
26
26
|
########################################################################################################################
|
27
27
|
|
28
|
-
class
|
28
|
+
class GridCalMainGUI(ScriptingMain):
|
29
29
|
"""
|
30
30
|
MainGUI
|
31
31
|
"""
|
@@ -136,7 +136,7 @@ def runGridCal() -> None:
|
|
136
136
|
app = QApplication(sys.argv)
|
137
137
|
# app.setStyle('Fusion') # ['Breeze', 'Oxygen', 'QtCurve', 'Windows', 'Fusion']
|
138
138
|
|
139
|
-
window_ =
|
139
|
+
window_ = GridCalMainGUI()
|
140
140
|
|
141
141
|
# process the argument if provided
|
142
142
|
if len(sys.argv) > 1:
|
@@ -701,7 +701,7 @@ class Ui_mainWindow(object):
|
|
701
701
|
self.tab_3.setObjectName(u"tab_3")
|
702
702
|
self.verticalLayout_37 = QVBoxLayout(self.tab_3)
|
703
703
|
self.verticalLayout_37.setObjectName(u"verticalLayout_37")
|
704
|
-
self.verticalLayout_37.setContentsMargins(0, 0, 0,
|
704
|
+
self.verticalLayout_37.setContentsMargins(0, 0, 0, 1)
|
705
705
|
self.diagramsListView = QListView(self.tab_3)
|
706
706
|
self.diagramsListView.setObjectName(u"diagramsListView")
|
707
707
|
self.diagramsListView.setFont(font1)
|
@@ -709,49 +709,21 @@ class Ui_mainWindow(object):
|
|
709
709
|
|
710
710
|
self.verticalLayout_37.addWidget(self.diagramsListView)
|
711
711
|
|
712
|
-
self.grid_colouring_frame = QFrame(self.tab_3)
|
713
|
-
self.grid_colouring_frame.setObjectName(u"grid_colouring_frame")
|
714
|
-
self.grid_colouring_frame.setMaximumSize(QSize(16777215, 50))
|
715
|
-
self.grid_colouring_frame.setFrameShape(QFrame.NoFrame)
|
716
|
-
self.grid_colouring_frame.setFrameShadow(QFrame.Raised)
|
717
|
-
self.horizontalLayout_30 = QHBoxLayout(self.grid_colouring_frame)
|
718
|
-
self.horizontalLayout_30.setObjectName(u"horizontalLayout_30")
|
719
|
-
self.horizontalLayout_30.setContentsMargins(1, 1, 1, 0)
|
720
|
-
self.available_results_to_color_comboBox = QComboBox(self.grid_colouring_frame)
|
721
|
-
self.available_results_to_color_comboBox.setObjectName(u"available_results_to_color_comboBox")
|
722
|
-
self.available_results_to_color_comboBox.setMinimumSize(QSize(164, 0))
|
723
|
-
self.available_results_to_color_comboBox.setFont(font1)
|
724
|
-
|
725
|
-
self.horizontalLayout_30.addWidget(self.available_results_to_color_comboBox)
|
726
|
-
|
727
|
-
self.colour_results_pushButton = QPushButton(self.grid_colouring_frame)
|
728
|
-
self.colour_results_pushButton.setObjectName(u"colour_results_pushButton")
|
729
|
-
self.colour_results_pushButton.setMaximumSize(QSize(32, 16777215))
|
730
712
|
icon78 = QIcon()
|
731
|
-
icon78.addFile(u":/Icons/icons/
|
732
|
-
self.
|
733
|
-
|
734
|
-
self.
|
735
|
-
|
736
|
-
|
737
|
-
self.
|
738
|
-
|
739
|
-
self.
|
740
|
-
self.
|
741
|
-
|
742
|
-
self.
|
743
|
-
|
744
|
-
self.
|
745
|
-
|
746
|
-
self.diagram_step_slider = QSlider(self.tab_3)
|
747
|
-
self.diagram_step_slider.setObjectName(u"diagram_step_slider")
|
748
|
-
self.diagram_step_slider.setOrientation(Qt.Horizontal)
|
749
|
-
|
750
|
-
self.verticalLayout_37.addWidget(self.diagram_step_slider)
|
751
|
-
|
752
|
-
icon79 = QIcon()
|
753
|
-
icon79.addFile(u":/Icons/icons/show_color_controls.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
754
|
-
self.tabWidget_6.addTab(self.tab_3, icon79, "")
|
713
|
+
icon78.addFile(u":/Icons/icons/show_color_controls.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
714
|
+
self.tabWidget_6.addTab(self.tab_3, icon78, "")
|
715
|
+
self.tab = QWidget()
|
716
|
+
self.tab.setObjectName(u"tab")
|
717
|
+
self.verticalLayout = QVBoxLayout(self.tab)
|
718
|
+
self.verticalLayout.setObjectName(u"verticalLayout")
|
719
|
+
self.verticalLayout.setContentsMargins(0, 0, 0, 1)
|
720
|
+
self.combinationsTreeView = QTreeView(self.tab)
|
721
|
+
self.combinationsTreeView.setObjectName(u"combinationsTreeView")
|
722
|
+
self.combinationsTreeView.setFrameShape(QFrame.NoFrame)
|
723
|
+
|
724
|
+
self.verticalLayout.addWidget(self.combinationsTreeView)
|
725
|
+
|
726
|
+
self.tabWidget_6.addTab(self.tab, icon50, "")
|
755
727
|
self.tab_4 = QWidget()
|
756
728
|
self.tab_4.setObjectName(u"tab_4")
|
757
729
|
self.verticalLayout_38 = QVBoxLayout(self.tab_4)
|
@@ -763,7 +735,7 @@ class Ui_mainWindow(object):
|
|
763
735
|
self.frame_58.setFrameShadow(QFrame.Raised)
|
764
736
|
self.gridLayout = QGridLayout(self.frame_58)
|
765
737
|
self.gridLayout.setObjectName(u"gridLayout")
|
766
|
-
self.gridLayout.setContentsMargins(6, 0, 6,
|
738
|
+
self.gridLayout.setContentsMargins(6, 0, 6, 4)
|
767
739
|
self.label_118 = QLabel(self.frame_58)
|
768
740
|
self.label_118.setObjectName(u"label_118")
|
769
741
|
font2 = QFont()
|
@@ -1100,12 +1072,51 @@ class Ui_mainWindow(object):
|
|
1100
1072
|
|
1101
1073
|
self.verticalLayout_38.addWidget(self.frame_58)
|
1102
1074
|
|
1103
|
-
|
1104
|
-
|
1105
|
-
self.tabWidget_6.addTab(self.tab_4,
|
1075
|
+
icon79 = QIcon()
|
1076
|
+
icon79.addFile(u":/Icons/icons/gear.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
1077
|
+
self.tabWidget_6.addTab(self.tab_4, icon79, "")
|
1106
1078
|
|
1107
1079
|
self.verticalLayout_2.addWidget(self.tabWidget_6)
|
1108
1080
|
|
1081
|
+
self.grid_colouring_frame = QFrame(self.diagram_selection_frame)
|
1082
|
+
self.grid_colouring_frame.setObjectName(u"grid_colouring_frame")
|
1083
|
+
self.grid_colouring_frame.setFrameShape(QFrame.NoFrame)
|
1084
|
+
self.grid_colouring_frame.setFrameShadow(QFrame.Raised)
|
1085
|
+
self.gridLayout_31 = QGridLayout(self.grid_colouring_frame)
|
1086
|
+
self.gridLayout_31.setObjectName(u"gridLayout_31")
|
1087
|
+
self.gridLayout_31.setContentsMargins(0, 0, 4, 0)
|
1088
|
+
self.schematic_step_label = QLabel(self.grid_colouring_frame)
|
1089
|
+
self.schematic_step_label.setObjectName(u"schematic_step_label")
|
1090
|
+
self.schematic_step_label.setFont(font1)
|
1091
|
+
self.schematic_step_label.setAlignment(Qt.AlignCenter)
|
1092
|
+
|
1093
|
+
self.gridLayout_31.addWidget(self.schematic_step_label, 2, 0, 1, 3)
|
1094
|
+
|
1095
|
+
self.available_results_to_color_comboBox = QComboBox(self.grid_colouring_frame)
|
1096
|
+
self.available_results_to_color_comboBox.setObjectName(u"available_results_to_color_comboBox")
|
1097
|
+
self.available_results_to_color_comboBox.setMinimumSize(QSize(164, 0))
|
1098
|
+
self.available_results_to_color_comboBox.setFont(font1)
|
1099
|
+
|
1100
|
+
self.gridLayout_31.addWidget(self.available_results_to_color_comboBox, 0, 0, 2, 2)
|
1101
|
+
|
1102
|
+
self.colour_results_pushButton = QPushButton(self.grid_colouring_frame)
|
1103
|
+
self.colour_results_pushButton.setObjectName(u"colour_results_pushButton")
|
1104
|
+
self.colour_results_pushButton.setMaximumSize(QSize(32, 16777215))
|
1105
|
+
icon80 = QIcon()
|
1106
|
+
icon80.addFile(u":/Icons/icons/color_grid.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
|
1107
|
+
self.colour_results_pushButton.setIcon(icon80)
|
1108
|
+
|
1109
|
+
self.gridLayout_31.addWidget(self.colour_results_pushButton, 0, 2, 2, 1)
|
1110
|
+
|
1111
|
+
self.diagram_step_slider = QSlider(self.grid_colouring_frame)
|
1112
|
+
self.diagram_step_slider.setObjectName(u"diagram_step_slider")
|
1113
|
+
self.diagram_step_slider.setOrientation(Qt.Horizontal)
|
1114
|
+
|
1115
|
+
self.gridLayout_31.addWidget(self.diagram_step_slider, 3, 0, 1, 3)
|
1116
|
+
|
1117
|
+
|
1118
|
+
self.verticalLayout_2.addWidget(self.grid_colouring_frame)
|
1119
|
+
|
1109
1120
|
self.diagram_selection_splitter.addWidget(self.diagram_selection_frame)
|
1110
1121
|
|
1111
1122
|
self.verticalLayout_5.addWidget(self.diagram_selection_splitter)
|
@@ -2761,14 +2772,24 @@ class Ui_mainWindow(object):
|
|
2761
2772
|
self.groupBox_3.setFont(font6)
|
2762
2773
|
self.gridLayout_27 = QGridLayout(self.groupBox_3)
|
2763
2774
|
self.gridLayout_27.setObjectName(u"gridLayout_27")
|
2764
|
-
self.
|
2765
|
-
|
2775
|
+
self.verticalSpacer_21 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
2776
|
+
|
2777
|
+
self.gridLayout_27.addItem(self.verticalSpacer_21, 8, 0, 1, 1)
|
2778
|
+
|
2779
|
+
self.label_129 = QLabel(self.groupBox_3)
|
2780
|
+
self.label_129.setObjectName(u"label_129")
|
2766
2781
|
font7 = QFont()
|
2767
2782
|
font7.setPointSize(9)
|
2768
2783
|
font7.setBold(False)
|
2769
|
-
self.
|
2784
|
+
self.label_129.setFont(font7)
|
2770
2785
|
|
2771
|
-
self.gridLayout_27.addWidget(self.
|
2786
|
+
self.gridLayout_27.addWidget(self.label_129, 2, 0, 1, 1)
|
2787
|
+
|
2788
|
+
self.ips_initialize_with_pf_checkBox = QCheckBox(self.groupBox_3)
|
2789
|
+
self.ips_initialize_with_pf_checkBox.setObjectName(u"ips_initialize_with_pf_checkBox")
|
2790
|
+
self.ips_initialize_with_pf_checkBox.setFont(font7)
|
2791
|
+
|
2792
|
+
self.gridLayout_27.addWidget(self.ips_initialize_with_pf_checkBox, 6, 0, 1, 2)
|
2772
2793
|
|
2773
2794
|
self.ips_method_comboBox = QComboBox(self.groupBox_3)
|
2774
2795
|
self.ips_method_comboBox.setObjectName(u"ips_method_comboBox")
|
@@ -2776,15 +2797,19 @@ class Ui_mainWindow(object):
|
|
2776
2797
|
|
2777
2798
|
self.gridLayout_27.addWidget(self.ips_method_comboBox, 0, 1, 1, 1)
|
2778
2799
|
|
2779
|
-
self.
|
2780
|
-
self.
|
2781
|
-
self.
|
2800
|
+
self.ips_iterations_spinBox = QSpinBox(self.groupBox_3)
|
2801
|
+
self.ips_iterations_spinBox.setObjectName(u"ips_iterations_spinBox")
|
2802
|
+
self.ips_iterations_spinBox.setFont(font7)
|
2803
|
+
self.ips_iterations_spinBox.setMinimum(1)
|
2804
|
+
self.ips_iterations_spinBox.setMaximum(9999999)
|
2805
|
+
self.ips_iterations_spinBox.setValue(100)
|
2782
2806
|
|
2783
|
-
self.gridLayout_27.addWidget(self.
|
2807
|
+
self.gridLayout_27.addWidget(self.ips_iterations_spinBox, 2, 1, 1, 1)
|
2784
2808
|
|
2785
|
-
self.
|
2809
|
+
self.label_130 = QLabel(self.groupBox_3)
|
2810
|
+
self.label_130.setObjectName(u"label_130")
|
2786
2811
|
|
2787
|
-
self.gridLayout_27.
|
2812
|
+
self.gridLayout_27.addWidget(self.label_130, 5, 0, 1, 1)
|
2788
2813
|
|
2789
2814
|
self.label_126 = QLabel(self.groupBox_3)
|
2790
2815
|
self.label_126.setObjectName(u"label_126")
|
@@ -2801,11 +2826,11 @@ class Ui_mainWindow(object):
|
|
2801
2826
|
|
2802
2827
|
self.gridLayout_27.addWidget(self.ips_tolerance_spinBox, 1, 1, 1, 1)
|
2803
2828
|
|
2804
|
-
self.
|
2805
|
-
self.
|
2806
|
-
self.
|
2829
|
+
self.label_125 = QLabel(self.groupBox_3)
|
2830
|
+
self.label_125.setObjectName(u"label_125")
|
2831
|
+
self.label_125.setFont(font7)
|
2807
2832
|
|
2808
|
-
self.gridLayout_27.addWidget(self.
|
2833
|
+
self.gridLayout_27.addWidget(self.label_125, 0, 0, 1, 1)
|
2809
2834
|
|
2810
2835
|
self.ips_trust_radius_doubleSpinBox = QDoubleSpinBox(self.groupBox_3)
|
2811
2836
|
self.ips_trust_radius_doubleSpinBox.setObjectName(u"ips_trust_radius_doubleSpinBox")
|
@@ -2816,25 +2841,17 @@ class Ui_mainWindow(object):
|
|
2816
2841
|
|
2817
2842
|
self.gridLayout_27.addWidget(self.ips_trust_radius_doubleSpinBox, 3, 1, 1, 1)
|
2818
2843
|
|
2819
|
-
self.
|
2820
|
-
self.
|
2821
|
-
self.
|
2822
|
-
self.ips_iterations_spinBox.setMinimum(1)
|
2823
|
-
self.ips_iterations_spinBox.setMaximum(9999999)
|
2824
|
-
self.ips_iterations_spinBox.setValue(100)
|
2825
|
-
|
2826
|
-
self.gridLayout_27.addWidget(self.ips_iterations_spinBox, 2, 1, 1, 1)
|
2827
|
-
|
2828
|
-
self.label_129 = QLabel(self.groupBox_3)
|
2829
|
-
self.label_129.setObjectName(u"label_129")
|
2830
|
-
self.label_129.setFont(font7)
|
2844
|
+
self.label_127 = QLabel(self.groupBox_3)
|
2845
|
+
self.label_127.setObjectName(u"label_127")
|
2846
|
+
self.label_127.setFont(font7)
|
2831
2847
|
|
2832
|
-
self.gridLayout_27.addWidget(self.
|
2848
|
+
self.gridLayout_27.addWidget(self.label_127, 3, 0, 1, 1)
|
2833
2849
|
|
2834
|
-
self.
|
2835
|
-
self.
|
2850
|
+
self.ips_control_Qlimits_checkBox = QCheckBox(self.groupBox_3)
|
2851
|
+
self.ips_control_Qlimits_checkBox.setObjectName(u"ips_control_Qlimits_checkBox")
|
2852
|
+
self.ips_control_Qlimits_checkBox.setFont(font7)
|
2836
2853
|
|
2837
|
-
self.gridLayout_27.addWidget(self.
|
2854
|
+
self.gridLayout_27.addWidget(self.ips_control_Qlimits_checkBox, 7, 0, 1, 2)
|
2838
2855
|
|
2839
2856
|
|
2840
2857
|
self.gridLayout_10.addWidget(self.groupBox_3, 3, 4, 1, 1)
|
@@ -4553,7 +4570,7 @@ class Ui_mainWindow(object):
|
|
4553
4570
|
|
4554
4571
|
self.gridLayout_8.addWidget(self.settings_tabWidget, 0, 2, 1, 1)
|
4555
4572
|
|
4556
|
-
self.tabWidget.addTab(self.SettingsTab,
|
4573
|
+
self.tabWidget.addTab(self.SettingsTab, icon79, "")
|
4557
4574
|
|
4558
4575
|
self.gridLayout_3.addWidget(self.tabWidget, 0, 0, 1, 1)
|
4559
4576
|
|
@@ -5092,19 +5109,9 @@ class Ui_mainWindow(object):
|
|
5092
5109
|
self.cancelButton.setText("")
|
5093
5110
|
#if QT_CONFIG(tooltip)
|
5094
5111
|
self.diagramsListView.setToolTip(QCoreApplication.translate("mainWindow", u"List of available diagrams", None))
|
5095
|
-
#endif // QT_CONFIG(tooltip)
|
5096
|
-
#if QT_CONFIG(tooltip)
|
5097
|
-
self.available_results_to_color_comboBox.setToolTip(QCoreApplication.translate("mainWindow", u"Available results", None))
|
5098
|
-
#endif // QT_CONFIG(tooltip)
|
5099
|
-
#if QT_CONFIG(tooltip)
|
5100
|
-
self.colour_results_pushButton.setToolTip(QCoreApplication.translate("mainWindow", u"Color the grid with the selected study", None))
|
5101
|
-
#endif // QT_CONFIG(tooltip)
|
5102
|
-
self.colour_results_pushButton.setText("")
|
5103
|
-
self.schematic_step_label.setText(QCoreApplication.translate("mainWindow", u"Snapshot", None))
|
5104
|
-
#if QT_CONFIG(tooltip)
|
5105
|
-
self.diagram_step_slider.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:700;\">Time slider</span></p><p>Move this time slider to select the appropriate time slot to view.</p><p>The first position sets the snapshot values, the rest attend to the time series values.</p></body></html>", None))
|
5106
5112
|
#endif // QT_CONFIG(tooltip)
|
5107
5113
|
self.tabWidget_6.setTabText(self.tabWidget_6.indexOf(self.tab_3), QCoreApplication.translate("mainWindow", u"Diagrams", None))
|
5114
|
+
self.tabWidget_6.setTabText(self.tabWidget_6.indexOf(self.tab), QCoreApplication.translate("mainWindow", u"Combinations", None))
|
5108
5115
|
self.label_118.setText(QCoreApplication.translate("mainWindow", u"Map tile provider", None))
|
5109
5116
|
#if QT_CONFIG(tooltip)
|
5110
5117
|
self.defaultBusVoltageSpinBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:700;\">Bus default voltage</span></p><p>This is the voltage that drag&drop buses have when they are created from the schematic.</p></body></html>", None))
|
@@ -5152,6 +5159,17 @@ class Ui_mainWindow(object):
|
|
5152
5159
|
self.redraw_pushButton.setText(QCoreApplication.translate("mainWindow", u"redraw", None))
|
5153
5160
|
self.branch_width_based_on_flow_checkBox.setText(QCoreApplication.translate("mainWindow", u"Width based on flow", None))
|
5154
5161
|
self.tabWidget_6.setTabText(self.tabWidget_6.indexOf(self.tab_4), QCoreApplication.translate("mainWindow", u"Settings", None))
|
5162
|
+
self.schematic_step_label.setText(QCoreApplication.translate("mainWindow", u"Snapshot", None))
|
5163
|
+
#if QT_CONFIG(tooltip)
|
5164
|
+
self.available_results_to_color_comboBox.setToolTip(QCoreApplication.translate("mainWindow", u"Available results", None))
|
5165
|
+
#endif // QT_CONFIG(tooltip)
|
5166
|
+
#if QT_CONFIG(tooltip)
|
5167
|
+
self.colour_results_pushButton.setToolTip(QCoreApplication.translate("mainWindow", u"Color the grid with the selected study", None))
|
5168
|
+
#endif // QT_CONFIG(tooltip)
|
5169
|
+
self.colour_results_pushButton.setText("")
|
5170
|
+
#if QT_CONFIG(tooltip)
|
5171
|
+
self.diagram_step_slider.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:700;\">Time slider</span></p><p>Move this time slider to select the appropriate time slot to view.</p><p>The first position sets the snapshot values, the rest attend to the time series values.</p></body></html>", None))
|
5172
|
+
#endif // QT_CONFIG(tooltip)
|
5155
5173
|
self.tabWidget_3.setTabText(self.tabWidget_3.indexOf(self.GridSectionTab), QCoreApplication.translate("mainWindow", u"Diagrams", None))
|
5156
5174
|
#if QT_CONFIG(tooltip)
|
5157
5175
|
self.smart_search_lineEdit.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:700;\">Subjects:</span></p><p>col, idx, val, colobj, idxobj</p><p>colobj and idxobj allow accessing the objects that may be represented at the index or the columns. With these you can access their internal properties for filtering.</p><p><span style=\" font-weight:700;\">Operators:</span></p><p>>, <, >=, <=, !=, =, like, notlike, starts, ends</p><p><span style=\" font-weight:700;\">Examples:</span></p><p>Filter all object names that are similar to 'alba' and their Vnom property > 200</p><p>-> idx<span style=\" font-style:italic;\">obj.name like alba and idxobj.Vnom > 200</span></p></body></html>", None))
|
@@ -5453,7 +5471,7 @@ class Ui_mainWindow(object):
|
|
5453
5471
|
#if QT_CONFIG(tooltip)
|
5454
5472
|
self.control_q_checkBox.setToolTip(QCoreApplication.translate("mainWindow", u"General switch for reactive power limits control", None))
|
5455
5473
|
#endif // QT_CONFIG(tooltip)
|
5456
|
-
self.control_q_checkBox.setText(QCoreApplication.translate("mainWindow", u"Control
|
5474
|
+
self.control_q_checkBox.setText(QCoreApplication.translate("mainWindow", u"Control Q limits", None))
|
5457
5475
|
#if QT_CONFIG(tooltip)
|
5458
5476
|
self.control_tap_modules_checkBox.setToolTip(QCoreApplication.translate("mainWindow", u"General switch for branches tap module control", None))
|
5459
5477
|
#endif // QT_CONFIG(tooltip)
|
@@ -5512,13 +5530,17 @@ class Ui_mainWindow(object):
|
|
5512
5530
|
#endif // QT_CONFIG(tooltip)
|
5513
5531
|
self.groupBox_3.setTitle(QCoreApplication.translate("mainWindow", u"Nonlinear settings", None))
|
5514
5532
|
#if QT_CONFIG(tooltip)
|
5515
|
-
self.
|
5533
|
+
self.label_129.setToolTip(QCoreApplication.translate("mainWindow", u"Interior point solver maximum number of iterations", None))
|
5516
5534
|
#endif // QT_CONFIG(tooltip)
|
5517
|
-
self.
|
5535
|
+
self.label_129.setText(QCoreApplication.translate("mainWindow", u"Iterations", None))
|
5518
5536
|
#if QT_CONFIG(tooltip)
|
5519
|
-
self.
|
5537
|
+
self.ips_initialize_with_pf_checkBox.setToolTip(QCoreApplication.translate("mainWindow", u"Initialize the interior point OPF with the power flow solution", None))
|
5520
5538
|
#endif // QT_CONFIG(tooltip)
|
5521
|
-
self.
|
5539
|
+
self.ips_initialize_with_pf_checkBox.setText(QCoreApplication.translate("mainWindow", u"Initialize with power flow", None))
|
5540
|
+
#if QT_CONFIG(tooltip)
|
5541
|
+
self.ips_iterations_spinBox.setToolTip(QCoreApplication.translate("mainWindow", u"Number of iterations of the method", None))
|
5542
|
+
#endif // QT_CONFIG(tooltip)
|
5543
|
+
self.label_130.setText("")
|
5522
5544
|
#if QT_CONFIG(tooltip)
|
5523
5545
|
self.label_126.setToolTip(QCoreApplication.translate("mainWindow", u"Interior point solver tolerance", None))
|
5524
5546
|
#endif // QT_CONFIG(tooltip)
|
@@ -5528,20 +5550,20 @@ class Ui_mainWindow(object):
|
|
5528
5550
|
#endif // QT_CONFIG(tooltip)
|
5529
5551
|
self.ips_tolerance_spinBox.setPrefix(QCoreApplication.translate("mainWindow", u"1e-", None))
|
5530
5552
|
#if QT_CONFIG(tooltip)
|
5531
|
-
self.
|
5553
|
+
self.label_125.setToolTip(QCoreApplication.translate("mainWindow", u"Interior point solver method", None))
|
5532
5554
|
#endif // QT_CONFIG(tooltip)
|
5533
|
-
self.
|
5555
|
+
self.label_125.setText(QCoreApplication.translate("mainWindow", u"IPS method", None))
|
5534
5556
|
#if QT_CONFIG(tooltip)
|
5535
5557
|
self.ips_trust_radius_doubleSpinBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p>Factor that multiplies each increment solution. </p><p>In practice this is used to slow down troublesome solutions.</p></body></html>", None))
|
5536
5558
|
#endif // QT_CONFIG(tooltip)
|
5537
5559
|
#if QT_CONFIG(tooltip)
|
5538
|
-
self.
|
5560
|
+
self.label_127.setToolTip(QCoreApplication.translate("mainWindow", u"Interior point trust radius", None))
|
5539
5561
|
#endif // QT_CONFIG(tooltip)
|
5562
|
+
self.label_127.setText(QCoreApplication.translate("mainWindow", u"Trust radius", None))
|
5540
5563
|
#if QT_CONFIG(tooltip)
|
5541
|
-
self.
|
5564
|
+
self.ips_control_Qlimits_checkBox.setToolTip(QCoreApplication.translate("mainWindow", u"General switch for reactive power limits control in the nonlinear optimal power flow", None))
|
5542
5565
|
#endif // QT_CONFIG(tooltip)
|
5543
|
-
self.
|
5544
|
-
self.label_130.setText("")
|
5566
|
+
self.ips_control_Qlimits_checkBox.setText(QCoreApplication.translate("mainWindow", u"Control Q limits", None))
|
5545
5567
|
self.groupBox.setTitle(QCoreApplication.translate("mainWindow", u"Linear settings", None))
|
5546
5568
|
self.label_103.setText(QCoreApplication.translate("mainWindow", u"Zone grouping", None))
|
5547
5569
|
self.label_132.setText("")
|
@@ -233,6 +233,7 @@ class ConfigurationMain(ResultsMain):
|
|
233
233
|
"ips_iterations": self.ui.ips_iterations_spinBox,
|
234
234
|
"ips_trust_radius": self.ui.ips_trust_radius_doubleSpinBox,
|
235
235
|
"ips_init_with_pf": self.ui.ips_initialize_with_pf_checkBox,
|
236
|
+
"ips_control_Qlimits": self.ui.ips_control_Qlimits_checkBox,
|
236
237
|
},
|
237
238
|
"continuation_power_flow": {
|
238
239
|
"max_iterations": self.ui.vs_max_iterations_spinBox,
|
@@ -346,7 +346,7 @@ class IoMain(ConfigurationMain):
|
|
346
346
|
self.set_diagram_widget(diagram)
|
347
347
|
|
348
348
|
else:
|
349
|
-
if self.circuit.get_bus_number() >
|
349
|
+
if self.circuit.get_bus_number() > 300:
|
350
350
|
quit_msg = ("The grid is quite large, hence the schematic might be slow.\n"
|
351
351
|
"Do you want to enable the schematic?\n"
|
352
352
|
"(you can always enable the drawing later)")
|
@@ -1065,3 +1065,24 @@ class IoMain(ConfigurationMain):
|
|
1065
1065
|
|
1066
1066
|
if filename != "":
|
1067
1067
|
save_catalogue(fname=filename, grid=self.circuit)
|
1068
|
+
|
1069
|
+
def set_circuit(self, grid: MultiCircuit, create_diagram: bool = True):
|
1070
|
+
"""
|
1071
|
+
|
1072
|
+
:param grid:
|
1073
|
+
:param create_diagram:
|
1074
|
+
:return:
|
1075
|
+
"""
|
1076
|
+
self.circuit = grid
|
1077
|
+
|
1078
|
+
if create_diagram:
|
1079
|
+
self.add_complete_bus_branch_diagram()
|
1080
|
+
|
1081
|
+
self.update_date_dependent_combos()
|
1082
|
+
self.update_from_to_list_views()
|
1083
|
+
self.clear_results()
|
1084
|
+
self.collect_memory()
|
1085
|
+
self.setup_time_sliders()
|
1086
|
+
self.get_circuit_snapshot_datetime()
|
1087
|
+
self.change_theme_mode()
|
1088
|
+
|
@@ -517,6 +517,56 @@ class SimulationsMain(TimeEventsMain):
|
|
517
517
|
|
518
518
|
self.ui.units_label.setText("")
|
519
519
|
|
520
|
+
@staticmethod
|
521
|
+
def get_investments_combination_tree_model(drv: sim.InvestmentsEvaluationDriver) -> QtGui.QStandardItemModel:
|
522
|
+
"""
|
523
|
+
Get the investments combination tree model
|
524
|
+
:param drv:
|
525
|
+
:return:
|
526
|
+
"""
|
527
|
+
model = QtGui.QStandardItemModel()
|
528
|
+
model.setHorizontalHeaderLabels([
|
529
|
+
"Combination", "capex", "opex", "losses", "overload_score", "voltage_score"
|
530
|
+
])
|
531
|
+
|
532
|
+
results = drv.results
|
533
|
+
for i in range(results.max_eval):
|
534
|
+
idx = np.where(results._combinations[i, :] != 0)[0]
|
535
|
+
if len(idx):
|
536
|
+
row_items = [
|
537
|
+
QtGui.QStandardItem(f"Combination {i}"),
|
538
|
+
QtGui.QStandardItem(f"{results._capex[i]:.2f}"),
|
539
|
+
QtGui.QStandardItem(f"{results._opex[i]:.2f}"),
|
540
|
+
QtGui.QStandardItem(f"{results._losses[i]:.2f}"),
|
541
|
+
QtGui.QStandardItem(f"{results._overload_score[i]:.2f}"),
|
542
|
+
QtGui.QStandardItem(f"{results._voltage_score[i]:.2f}"),
|
543
|
+
]
|
544
|
+
model.appendRow(row_items)
|
545
|
+
|
546
|
+
# Add names as child nodes under this combination
|
547
|
+
names_parent_item = row_items[0] # Use the first column (Combination) as parent
|
548
|
+
for k in idx:
|
549
|
+
name_item = QtGui.QStandardItem(results.investment_groups_names[k])
|
550
|
+
names_parent_item.appendRow([name_item] + [QtGui.QStandardItem("") for _ in range(5)])
|
551
|
+
|
552
|
+
return model
|
553
|
+
|
554
|
+
def fill_combinations_tree(self, drv: DRIVER_OBJECTS | None):
|
555
|
+
"""
|
556
|
+
Fill the tree driver
|
557
|
+
:param drv: Any Driver object
|
558
|
+
"""
|
559
|
+
if drv is None:
|
560
|
+
self.ui.combinationsTreeView.setModel(None)
|
561
|
+
else:
|
562
|
+
if drv.tpe == SimulationTypes.InvestmentsEvaluation_run:
|
563
|
+
model = self.get_investments_combination_tree_model(drv=drv)
|
564
|
+
self.ui.combinationsTreeView.setModel(model)
|
565
|
+
# self.ui.combinationsTreeView.expandAll()
|
566
|
+
|
567
|
+
else:
|
568
|
+
self.ui.combinationsTreeView.setModel(None)
|
569
|
+
|
520
570
|
def changed_study(self):
|
521
571
|
"""
|
522
572
|
|
@@ -539,6 +589,8 @@ class SimulationsMain(TimeEventsMain):
|
|
539
589
|
else:
|
540
590
|
self.setup_time_sliders()
|
541
591
|
|
592
|
+
self.fill_combinations_tree(drv=drv)
|
593
|
+
|
542
594
|
def update_available_results(self) -> None:
|
543
595
|
"""
|
544
596
|
Update the results that are displayed in the results tab
|
@@ -1888,7 +1940,10 @@ class SimulationsMain(TimeEventsMain):
|
|
1888
1940
|
ips_iterations = self.ui.ips_iterations_spinBox.value()
|
1889
1941
|
ips_trust_radius = self.ui.ips_trust_radius_doubleSpinBox.value()
|
1890
1942
|
ips_init_with_pf = self.ui.ips_initialize_with_pf_checkBox.isChecked()
|
1943
|
+
ips_control_q_limits = self.ui.ips_control_Qlimits_checkBox.isChecked()
|
1944
|
+
|
1891
1945
|
verbose = self.ui.ips_verbose_spinBox.value()
|
1946
|
+
|
1892
1947
|
options = sim.OptimalPowerFlowOptions(solver=solver,
|
1893
1948
|
time_grouping=time_grouping,
|
1894
1949
|
zonal_grouping=zonal_grouping,
|
@@ -1908,6 +1963,7 @@ class SimulationsMain(TimeEventsMain):
|
|
1908
1963
|
ips_iterations=ips_iterations,
|
1909
1964
|
ips_trust_radius=ips_trust_radius,
|
1910
1965
|
ips_init_with_pf=ips_init_with_pf,
|
1966
|
+
ips_control_q_limits=ips_control_q_limits,
|
1911
1967
|
robust=robust,
|
1912
1968
|
verbose=verbose)
|
1913
1969
|
|
@@ -2454,7 +2510,8 @@ class SimulationsMain(TimeEventsMain):
|
|
2454
2510
|
options = sim.InvestmentsEvaluationOptions(solver=method,
|
2455
2511
|
max_eval=max_eval,
|
2456
2512
|
pf_options=self.get_selected_power_flow_options(),
|
2457
|
-
|
2513
|
+
opf_options=self.get_opf_options(),
|
2514
|
+
obj_tpe=obj_fn_tpe,
|
2458
2515
|
plugin_fcn_ptr=fn_ptr
|
2459
2516
|
)
|
2460
2517
|
|