GridCal 5.3.50__tar.gz → 5.3.52__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.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +1 -1
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +1 -1
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +44 -10
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +47 -10
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +8 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/simulations.py +57 -33
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/icons_rc.py +204 -204
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/__version__.py +1 -1
- {gridcal-5.3.50 → gridcal-5.3.52}/PKG-INFO +1 -1
- gridcal-5.3.50/GridCal/adequacy_output.csv +0 -955
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ExecuteGridCal.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/AboutDialogue/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Analysis/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Analysis/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Analysis/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/CascadingSteps/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/Editors/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/Editors/controllable_shunt_editor.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/Editors/generator_editor.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/Editors/line_editor.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/Editors/new_line_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/Editors/transformer3w_editor.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/Editors/transformer_editor.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/Editors/transformer_taps_editor.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridGenerator/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridGenerator/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/build_diff_tree.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/demo_code.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/demo_code2.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/demo_code3.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/demo_code4.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/grid_diff.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/grid_diff_gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/grid_merge.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/grid_merge_gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/GridMerge/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/ConsoleLog.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/GridCalMain.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/MainWindow.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/SubClasses/io.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/object_select_window.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Main/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SyncDialogue/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SystemScaler/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TowerBuilder/table_models.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TowerBuilder/tower_builder.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Visualization/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Visualization/visualization.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Widgets/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/associations_model.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/general_dialogues.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/gui_functions.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/messages.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/object_model.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/pandas_model.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/plot_config.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/profiles_model.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/python_console.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/python_highlighter.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/results_model.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/table_view_header_wrap.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/themes.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/toast_widget.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/update_gui_all.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/update_gui_common.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/wrappable_table_model.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/LICENSE.txt +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Session/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Session/export_results_driver.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Session/file_handler.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Session/server_driver.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Session/session.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Session/synchronization_driver.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/darkdetect/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/darkdetect/_dummy.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/darkdetect/_linux_detect.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/darkdetect/_mac_detect.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/darkdetect/_windows_detect.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/data/GridCal.ico +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/data/GridCal.svg +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/data/__init__.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/data/cables.csv +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/data/sequence_lines.csv +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/data/transformers.csv +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/data/wires.csv +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/plugins.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/templates.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/GridCal/update.py +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/setup.cfg +0 -0
- {gridcal-5.3.50 → gridcal-5.3.52}/setup.py +0 -0
@@ -453,7 +453,7 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
|
|
453
453
|
devs = list()
|
454
454
|
# find associated Branches in reverse order
|
455
455
|
for obj in substation_buses:
|
456
|
-
for branch_list in self.editor.circuit.get_branch_lists():
|
456
|
+
for branch_list in self.editor.circuit.get_branch_lists(add_vsc=True, add_hvdc=True, add_switch=True):
|
457
457
|
for i in range(len(branch_list) - 1, -1, -1):
|
458
458
|
if branch_list[i].bus_from == obj:
|
459
459
|
devs.append(branch_list[i])
|
@@ -1186,7 +1186,7 @@ class GridMapWidget(BaseDiagramWidget):
|
|
1186
1186
|
lnorm[lnorm == np.inf] = 0
|
1187
1187
|
Sfabs = np.abs(Sf)
|
1188
1188
|
Sfnorm = Sfabs / np.max(Sfabs + 1e-20)
|
1189
|
-
for i, branch in enumerate(self.circuit.
|
1189
|
+
for i, branch in enumerate(self.circuit.get_branches_iter(add_vsc=False, add_hvdc=False, add_switch=True)):
|
1190
1190
|
|
1191
1191
|
# try to find the diagram object of the DB object
|
1192
1192
|
graphic_object: Union[MapAcLine, MapDcLine] = self.graphics_manager.query(branch)
|
{gridcal-5.3.50 → gridcal-5.3.52}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py
RENAMED
@@ -72,19 +72,39 @@ class VscGraphicItem(LineGraphicTemplateItem):
|
|
72
72
|
checkeable=True,
|
73
73
|
checked_value=self.draw_labels)
|
74
74
|
|
75
|
-
rabf = menu.addAction('Change bus')
|
76
|
-
move_bus_icon = QIcon()
|
77
|
-
move_bus_icon.addPixmap(QPixmap(":/Icons/icons/move_bus.svg"))
|
78
|
-
rabf.setIcon(move_bus_icon)
|
79
|
-
rabf.triggered.connect(self.change_bus)
|
75
|
+
# rabf = menu.addAction('Change bus')
|
76
|
+
# move_bus_icon = QIcon()
|
77
|
+
# move_bus_icon.addPixmap(QPixmap(":/Icons/icons/move_bus.svg"))
|
78
|
+
# rabf.setIcon(move_bus_icon)
|
79
|
+
# rabf.triggered.connect(self.change_bus)
|
80
|
+
|
81
|
+
add_menu_entry(menu=menu,
|
82
|
+
text="Change bus",
|
83
|
+
function_ptr=self.change_bus,
|
84
|
+
icon_path=":/Icons/icons/move_bus.svg")
|
85
|
+
|
86
|
+
add_menu_entry(menu=menu,
|
87
|
+
text="Set Control dev 1",
|
88
|
+
function_ptr=self.set_control_dev_1,
|
89
|
+
icon_path=":/Icons/icons/move_bus.svg")
|
90
|
+
|
91
|
+
add_menu_entry(menu=menu,
|
92
|
+
text="Set Control dev 2",
|
93
|
+
function_ptr=self.set_control_dev_2,
|
94
|
+
icon_path=":/Icons/icons/move_bus.svg")
|
80
95
|
|
81
96
|
menu.addSeparator()
|
82
97
|
|
83
|
-
ra2 = menu.addAction('Delete')
|
84
|
-
del_icon = QIcon()
|
85
|
-
del_icon.addPixmap(QPixmap(":/Icons/icons/delete3.svg"))
|
86
|
-
ra2.setIcon(del_icon)
|
87
|
-
ra2.triggered.connect(self.delete)
|
98
|
+
# ra2 = menu.addAction('Delete')
|
99
|
+
# del_icon = QIcon()
|
100
|
+
# del_icon.addPixmap(QPixmap(":/Icons/icons/delete3.svg"))
|
101
|
+
# ra2.setIcon(del_icon)
|
102
|
+
# ra2.triggered.connect(self.delete)
|
103
|
+
|
104
|
+
add_menu_entry(menu=menu,
|
105
|
+
text="Delete",
|
106
|
+
function_ptr=self.delete,
|
107
|
+
icon_path=":/Icons/icons/delete3.svg")
|
88
108
|
|
89
109
|
menu.addSeparator()
|
90
110
|
|
@@ -146,3 +166,17 @@ class VscGraphicItem(LineGraphicTemplateItem):
|
|
146
166
|
"""
|
147
167
|
self.api_object.regulation_bus = self.api_object.bus_to
|
148
168
|
self.api_object.tap_module_control_mode = TapModuleControl.Vm
|
169
|
+
|
170
|
+
def set_control_dev_1(self):
|
171
|
+
"""
|
172
|
+
|
173
|
+
:return:
|
174
|
+
"""
|
175
|
+
self.editor.set_vsc_control_dev(graphic=self, control_idx=1)
|
176
|
+
|
177
|
+
def set_control_dev_2(self):
|
178
|
+
"""
|
179
|
+
|
180
|
+
:return:
|
181
|
+
"""
|
182
|
+
self.editor.set_vsc_control_dev(graphic=self, control_idx=2)
|
@@ -3498,7 +3498,10 @@ class SchematicWidget(BaseDiagramWidget):
|
|
3498
3498
|
# VSC lines
|
3499
3499
|
if vsc_Pf is not None:
|
3500
3500
|
|
3501
|
-
|
3501
|
+
if vsc_Qt is None:
|
3502
|
+
vsc_sending_power_norm = np.abs(vsc_Pt) / (max_flow + 1e-20)
|
3503
|
+
else:
|
3504
|
+
vsc_sending_power_norm = np.abs(vsc_Pt + 1j * vsc_Qt) / (max_flow + 1e-20)
|
3502
3505
|
|
3503
3506
|
if self.circuit.get_vsc_number() == len(vsc_Pf):
|
3504
3507
|
for i, elm in enumerate(self.circuit.vsc_devices):
|
@@ -3549,15 +3552,25 @@ class SchematicWidget(BaseDiagramWidget):
|
|
3549
3552
|
|
3550
3553
|
tooltip += '\nPower (from):\t' + "{:10.4f}".format(vsc_Pf[i]) + ' [MW]'
|
3551
3554
|
|
3552
|
-
if
|
3553
|
-
|
3554
|
-
|
3555
|
-
|
3556
|
-
|
3557
|
-
|
3555
|
+
if vsc_Qt is None:
|
3556
|
+
if vsc_losses is not None:
|
3557
|
+
tooltip += '\nPower (to):\t' + "{:10.4f}".format(vsc_Pt[i]) + ' [MW]'
|
3558
|
+
tooltip += '\nLosses: \t\t' + "{:10.4f}".format(vsc_losses[i]) + ' [MW]'
|
3559
|
+
graphic_object.set_arrows_with_power(Sf=vsc_Pf[i],
|
3560
|
+
St=vsc_Pt[i])
|
3561
|
+
else:
|
3562
|
+
graphic_object.set_arrows_with_power(Sf=vsc_Pf[i],
|
3563
|
+
St=-vsc_Pf[i])
|
3558
3564
|
else:
|
3559
|
-
|
3560
|
-
|
3565
|
+
if vsc_losses is not None:
|
3566
|
+
tooltip += '\nPower (to):\t' + "{:10.4f}".format(vsc_Pt[i]) + ' [MW]'
|
3567
|
+
tooltip += '\nPower (to):\t' + "{:10.4f}".format(vsc_Qt[i]) + ' [Mvar]'
|
3568
|
+
tooltip += '\nLosses: \t\t' + "{:10.4f}".format(vsc_losses[i]) + ' [MW]'
|
3569
|
+
graphic_object.set_arrows_with_power(Sf=vsc_Pf[i] + 1j * 0.0,
|
3570
|
+
St=vsc_Pt[i] + 1j * vsc_Qt[i])
|
3571
|
+
else:
|
3572
|
+
graphic_object.set_arrows_with_power(Sf=vsc_Pf[i] + 1j * 0.0,
|
3573
|
+
St=-vsc_Pf[i] + 1j * vsc_Qt[i])
|
3561
3574
|
|
3562
3575
|
graphic_object.setToolTipText(tooltip)
|
3563
3576
|
graphic_object.set_colour(color, w, style)
|
@@ -3787,7 +3800,7 @@ class SchematicWidget(BaseDiagramWidget):
|
|
3787
3800
|
bus_dict[bus.idtag] = graphic_object
|
3788
3801
|
|
3789
3802
|
# third pass: we must also add all those branches connecting the selected buses
|
3790
|
-
for lst in self.circuit.get_branch_lists():
|
3803
|
+
for lst in self.circuit.get_branch_lists(add_vsc=True, add_hvdc=True, add_switch=True):
|
3791
3804
|
for api_object in lst:
|
3792
3805
|
if api_object.bus_from.idtag in bus_dict or api_object.bus_to.idtag in bus_dict:
|
3793
3806
|
diagram.set_point(device=api_object,
|
@@ -4316,6 +4329,30 @@ class SchematicWidget(BaseDiagramWidget):
|
|
4316
4329
|
if idx_bus_list[0][1] == line_graphics.api_object.bus_from:
|
4317
4330
|
idx, old_bus, old_bus_graphic_item = idx_bus_list[0]
|
4318
4331
|
|
4332
|
+
def set_vsc_control_dev(self, graphic: VscGraphicItem, control_idx: int):
|
4333
|
+
"""
|
4334
|
+
Set the VSC control1_dev or control1_dev with the selected bus
|
4335
|
+
:param graphic: VscGraphicItem
|
4336
|
+
:param control_idx: 1 or 2 to set control1_dev or control1_dev
|
4337
|
+
"""
|
4338
|
+
|
4339
|
+
idx_bus_list = self.get_selected_buses()
|
4340
|
+
|
4341
|
+
if len(idx_bus_list) == 1:
|
4342
|
+
|
4343
|
+
# detect the bus and its combinations
|
4344
|
+
idx, sel_bus, sel_bus_graphic_item = idx_bus_list[0]
|
4345
|
+
|
4346
|
+
if control_idx == 1:
|
4347
|
+
graphic.api_object.control1_dev = sel_bus
|
4348
|
+
elif control_idx == 2:
|
4349
|
+
graphic.api_object.control2_dev = sel_bus
|
4350
|
+
else:
|
4351
|
+
print("control_idx must be either 1 or 2")
|
4352
|
+
else:
|
4353
|
+
error_msg(f"You need to select exactly one bus to be set as the VSC control device {control_idx}",
|
4354
|
+
"Set VSC control device 1")
|
4355
|
+
|
4319
4356
|
def get_picture_width(self) -> int:
|
4320
4357
|
return self.editor_graphics_view.width()
|
4321
4358
|
|
@@ -827,13 +827,21 @@ class DiagramsMain(CompiledArraysMain):
|
|
827
827
|
bus_active=bus_active,
|
828
828
|
loadings=results.loading,
|
829
829
|
types=results.bus_types,
|
830
|
+
|
830
831
|
Sf=results.Sf,
|
831
832
|
St=results.St,
|
832
833
|
br_active=br_active,
|
834
|
+
|
833
835
|
hvdc_Pf=results.hvdc_Pf,
|
834
836
|
hvdc_Pt=-results.hvdc_Pf,
|
835
837
|
hvdc_loading=results.hvdc_loading,
|
836
838
|
hvdc_active=hvdc_active,
|
839
|
+
|
840
|
+
vsc_Pf=results.vsc_Pf,
|
841
|
+
vsc_Pt=-results.vsc_Pf,
|
842
|
+
vsc_loading=results.vsc_loading,
|
843
|
+
vsc_active=vsc_active,
|
844
|
+
|
837
845
|
use_flow_based_width=use_flow_based_width,
|
838
846
|
min_branch_width=min_branch_width,
|
839
847
|
max_branch_width=max_branch_width,
|
@@ -218,7 +218,7 @@ class SimulationsMain(TimeEventsMain):
|
|
218
218
|
self.ui.actionLinearAnalysis.triggered.connect(self.linear_pf_dispatcher)
|
219
219
|
self.ui.actionContingency_analysis.triggered.connect(self.contingencies_dispatcher)
|
220
220
|
self.ui.actionOTDF_time_series.triggered.connect(self.run_contingency_analysis_ts)
|
221
|
-
self.ui.actionATC.triggered.connect(self.
|
221
|
+
self.ui.actionATC.triggered.connect(self.atc_dispatcher)
|
222
222
|
self.ui.actionATC_Time_Series.triggered.connect(self.run_available_transfer_capacity_ts)
|
223
223
|
self.ui.actionPTDF_time_series.triggered.connect(self.run_linear_analysis_ts)
|
224
224
|
self.ui.actionClustering.triggered.connect(self.run_clustering)
|
@@ -850,16 +850,16 @@ class SimulationsMain(TimeEventsMain):
|
|
850
850
|
else:
|
851
851
|
self.run_opf()
|
852
852
|
|
853
|
-
def
|
853
|
+
def atc_dispatcher(self):
|
854
854
|
"""
|
855
855
|
Dispatch the NTC action
|
856
856
|
:return:
|
857
857
|
"""
|
858
858
|
if self.server_driver.is_running():
|
859
859
|
if self.ts_flag():
|
860
|
-
instruction = RemoteInstruction(operation=SimulationTypes.
|
860
|
+
instruction = RemoteInstruction(operation=SimulationTypes.NetTransferCapacityTS_run)
|
861
861
|
else:
|
862
|
-
instruction = RemoteInstruction(operation=SimulationTypes.
|
862
|
+
instruction = RemoteInstruction(operation=SimulationTypes.NetTransferCapacity_run)
|
863
863
|
|
864
864
|
self.run_remote(instruction=instruction)
|
865
865
|
else:
|
@@ -2277,13 +2277,21 @@ class SimulationsMain(TimeEventsMain):
|
|
2277
2277
|
"""
|
2278
2278
|
Actions to run after the OPF simulation
|
2279
2279
|
"""
|
2280
|
-
|
2280
|
+
drv, results = self.session.optimal_net_transfer_capacity
|
2281
2281
|
|
2282
2282
|
if results is not None:
|
2283
2283
|
self.remove_simulation(SimulationTypes.OPF_NTC_run)
|
2284
2284
|
self.update_available_results()
|
2285
2285
|
self.colour_diagrams()
|
2286
2286
|
|
2287
|
+
if results.converged:
|
2288
|
+
if drv.logger.error_count() == 0:
|
2289
|
+
self.show_info_toast("Optimal result")
|
2290
|
+
else:
|
2291
|
+
self.show_warning_toast("Optimal result with errors :/")
|
2292
|
+
else:
|
2293
|
+
self.show_warning_toast("Not optimal result :/")
|
2294
|
+
|
2287
2295
|
if not self.session.is_anything_running():
|
2288
2296
|
self.UNLOCK()
|
2289
2297
|
|
@@ -2600,20 +2608,32 @@ class SimulationsMain(TimeEventsMain):
|
|
2600
2608
|
)
|
2601
2609
|
|
2602
2610
|
elif obj_fn_tpe == InvestmentsEvaluationObjectives.GenerationAdequacy:
|
2603
|
-
|
2604
|
-
|
2605
|
-
|
2606
|
-
|
2607
|
-
|
2608
|
-
|
2611
|
+
|
2612
|
+
if self.circuit.has_time_series:
|
2613
|
+
problem = sim.AdequacyInvestmentProblem(
|
2614
|
+
grid=self.circuit,
|
2615
|
+
n_monte_carlo_sim=self.ui.max_iterations_reliability_spinBox.value(),
|
2616
|
+
use_monte_carlo=True,
|
2617
|
+
save_file=False,
|
2618
|
+
time_indices=self.get_time_indices()
|
2619
|
+
)
|
2620
|
+
else:
|
2621
|
+
self.show_warning_toast('Adequacy studies need time data...')
|
2622
|
+
return
|
2609
2623
|
|
2610
2624
|
elif obj_fn_tpe == InvestmentsEvaluationObjectives.SimpleDispatch:
|
2611
|
-
|
2612
|
-
|
2613
|
-
|
2614
|
-
|
2615
|
-
|
2616
|
-
|
2625
|
+
|
2626
|
+
if self.circuit.has_time_series:
|
2627
|
+
problem = sim.AdequacyInvestmentProblem(
|
2628
|
+
grid=self.circuit,
|
2629
|
+
n_monte_carlo_sim=self.ui.max_iterations_reliability_spinBox.value(),
|
2630
|
+
use_monte_carlo=False,
|
2631
|
+
save_file=False,
|
2632
|
+
time_indices=self.get_time_indices()
|
2633
|
+
)
|
2634
|
+
else:
|
2635
|
+
self.show_warning_toast('Adequacy studies need time data...')
|
2636
|
+
return
|
2617
2637
|
|
2618
2638
|
else:
|
2619
2639
|
self.show_error_toast("Objective not supported yet :/")
|
@@ -2893,30 +2913,34 @@ class SimulationsMain(TimeEventsMain):
|
|
2893
2913
|
"""
|
2894
2914
|
if self.circuit.valid_for_simulation():
|
2895
2915
|
|
2896
|
-
if
|
2916
|
+
if self.circuit.get_time_number() > 0:
|
2897
2917
|
|
2898
|
-
self.
|
2918
|
+
if not self.session.is_this_running(SimulationTypes.Reliability_run):
|
2899
2919
|
|
2900
|
-
|
2920
|
+
self.add_simulation(SimulationTypes.Reliability_run)
|
2901
2921
|
|
2902
|
-
|
2903
|
-
self.ui.progress_label.setText('Compiling the grid...')
|
2904
|
-
QtGui.QGuiApplication.processEvents()
|
2922
|
+
self.LOCK()
|
2905
2923
|
|
2906
|
-
|
2924
|
+
# Compile the grid
|
2925
|
+
self.ui.progress_label.setText('Compiling the grid...')
|
2926
|
+
QtGui.QGuiApplication.processEvents()
|
2907
2927
|
|
2908
|
-
|
2909
|
-
pf_options=pf_options,
|
2910
|
-
n_sim=self.ui.max_iterations_reliability_spinBox.value())
|
2928
|
+
pf_options = self.get_selected_power_flow_options()
|
2911
2929
|
|
2912
|
-
|
2913
|
-
|
2914
|
-
|
2915
|
-
|
2930
|
+
drv = sim.ReliabilityStudyDriver(grid=self.circuit,
|
2931
|
+
pf_options=pf_options,
|
2932
|
+
time_indices=self.get_time_indices(),
|
2933
|
+
n_sim=self.ui.max_iterations_reliability_spinBox.value())
|
2916
2934
|
|
2917
|
-
|
2918
|
-
|
2935
|
+
self.session.run(drv,
|
2936
|
+
post_func=self.post_reliability,
|
2937
|
+
prog_func=self.ui.progressBar.setValue,
|
2938
|
+
text_func=self.ui.progress_label.setText)
|
2919
2939
|
|
2940
|
+
else:
|
2941
|
+
self.show_warning_toast('Another reliability study is running already...')
|
2942
|
+
else:
|
2943
|
+
self.show_warning_toast('Reliability studies need time data...')
|
2920
2944
|
else:
|
2921
2945
|
pass
|
2922
2946
|
|