GridCalEngine 5.0.0a33__tar.gz → 5.0.2__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.
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/DataStructures/numerical_circuit.py +2 -1
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/admittance_matrices.py +16 -8
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContingencyAnalysis/helm_contingencies.py +2 -1
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/NTC/ntc_opf.py +25 -28
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/linear_opf_ts.py +56 -60
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/opf_results.py +1 -1
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/opf_ts_driver.py +1 -3
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/power_flow_driver.py +3 -2
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/power_flow_worker.py +140 -132
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_worker.py +8 -4
- GridCalEngine-5.0.2/GridCalEngine/Utils/MIP/ortools_interface.py +307 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/MIP/selected_interface.py +2 -4
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/__version__.py +1 -1
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/PKG-INFO +1 -1
- GridCalEngine-5.0.0a33/GridCalEngine/Utils/MIP/ortools_interface.py +0 -170
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Compilers/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Compilers/circuit_to_bentayga.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Compilers/circuit_to_data.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Compilers/circuit_to_newton_pa.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Compilers/circuit_to_optimods.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Compilers/circuit_to_pgm.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/DataStructures/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/DataStructures/battery_data.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/DataStructures/branch_data.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/DataStructures/bus_data.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/DataStructures/generator_data.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/DataStructures/hvdc_data.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/DataStructures/load_data.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/DataStructures/shunt_data.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/area.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/contingency.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/contingency_group.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/country.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/emission_gas.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/fuel.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/investment.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/investments_group.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/technology.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Aggregation/zone.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Associations/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Associations/generator_emission.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Associations/generator_fuel.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Associations/generator_technology.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/branch.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/dc_line.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/hvdc_line.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/line.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/switch.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/tap_changer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/templates/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/templates/line_template.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/templates/overhead_line_type.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/templates/parent_branch.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/templates/sequence_line_type.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/templates/transformer_type.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/templates/underground_line.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/transformer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/transformer3w.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/upfc.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/vsc.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/winding.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Branches/wire.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Diagrams/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Diagrams/base_diagram.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Diagrams/bus_branch_diagram.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Diagrams/graphic_location.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Diagrams/map_diagram.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Diagrams/map_location.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Diagrams/node_breaker_diagram.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Fluid/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Fluid/fluid_node.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Fluid/fluid_path.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Fluid/fluid_pump.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Fluid/fluid_turbine.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Injections/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Injections/battery.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Injections/external_grid.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Injections/generator.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Injections/generator_q_curve.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Injections/injection_template.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Injections/load.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Injections/shunt.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Injections/static_generator.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Substation/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Substation/bus.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Substation/connectivity_node.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/Substation/substation.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/editable_device.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/measurement.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/multi_circuit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/profile.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/Devices/sparse_array.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Core/topology.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/base/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/base/base_circuit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/base/base_device.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/base/base_property.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/base/units.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_circuit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_data_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_enums.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_poperty.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_to_gridcal.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_writer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/cgm_region.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/control_area.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/energy_area.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/geographical_region.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/load_area.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/merging_agent.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/modelling_authority.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/operational_limit_set.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/operational_limit_type.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/sub_geographical_region.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/sub_load_area.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/base.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/current_limit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/dipole.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/equivalent_branch.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/line/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/line/ac_line_segment.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/line/line.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/tie_flow.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_non_linear.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_symmetrical.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_table.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_table_point.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_tabular.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/power_transformer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/power_transformer_end.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/ratio_tap_changer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/ratio_tap_changer_table.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/ratio_tap_changer_table_point.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/tap_changer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/tap_changer_control.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/conducting_equipment.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/equipment.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/equipment_container.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/equivalent_equipment.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/full_model.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/identified_object.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/energy_scheduling_type.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/energy_source.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/control_area_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/fossil_fuel.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/fuel_type.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/generating_unit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/hydro_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/hydro_power_plant.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/hydro_pump.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/nuclear_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/reactive_capability_curve.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/rotating_machine.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/solar_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/synchronous_machine.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/thermal_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/wind_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/conform_load.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/conform_load_group.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/energy_consumer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/equivalent_injection.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/equivalent_network.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/load_group.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/load_response_characteristic.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/non_conform_load.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/non_conform_load_group.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/monopole.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/power_systems_resource.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/regulating_cond_eq.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/regulating_control.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/shunt/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/shunt/linear_shunt_compensator.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/shunt/shunt_compensator.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/shunt/static_var_compensator.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/inputs/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/inputs/curve.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/inputs/curve_data.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/sv_power_flow.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/sv_shunt_compensator_sections.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/sv_tap_step.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/sv_voltage.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/topological_island.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/acdc_terminal.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/base_voltage.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/breaker.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/bus_bar_section.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/bus_name_marker.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/connectivity_node.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/connectivity_node_container.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/connector.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/junction.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/load_breaker_switch.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/substation.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/switch.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/voltage_level.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/voltage_limit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/terminal.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/topological_node.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cim16/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cim16/cim_circuit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cim16/cim_data_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cim16/cim_devices.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cim16/cim_enums.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/cim16/cim_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/db/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/db/base_db.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/db/cgmes_lookup_db.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/db/db_handler.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/db/file_system.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/cim/db/psse_lookup_db.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/dgs/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/dgs/dgs_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/epc/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/epc/epc_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/file_handler.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/file_system.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/gridcal/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/gridcal/contingency_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/gridcal/excel_interface.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/gridcal/generic_io_functions.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/gridcal/h5_interface.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/gridcal/json_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/gridcal/pack_unpack.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/gridcal/sqlite_interface.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/gridcal/zip_interface.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/matpower/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/matpower/matpower_branch_definitions.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/matpower/matpower_bus_definitions.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/matpower/matpower_gen_definitions.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/matpower/matpower_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/matpower/matpower_storage_definitions.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/others/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/others/dpx_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/others/ipa_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/others/plx_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/others/pypsa_parser.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/area.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/branch.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/bus.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/facts.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/fixed_shunt.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/generator.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/gne_device.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/induction_machine.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/inter_area.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/load.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/node.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/owner.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/psse_circuit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/psse_object.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/psse_property.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/substation.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/switched_shunt.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/system_switching_device.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/transformer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/two_terminal_dc_line.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/vsc_dc_line.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/devices/zone.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/gridcal_to_raw.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/raw_functions.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/raw_parser_legacy.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/raw_parser_writer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/raw_to_gridcal.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/rawx_parser_legacy.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/IO/raw/rawx_parser_writer.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/LICENSE.txt +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ATC/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ATC/available_transfer_capacity_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ATC/available_transfer_capacity_ts_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Clustering/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Clustering/clustering.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Clustering/clustering_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Clustering/clustering_options.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Clustering/clustering_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContingencyAnalysis/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContingencyAnalysis/contingencies_report.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_options.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_ts_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_ts_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_plan.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContinuationPowerFlow/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow_input.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow_options.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Dynamics/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Dynamics/dynamic_modules.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Dynamics/transient_stability_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/InputsAnalysis/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/InputsAnalysis/inputs_analysis_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/InvestmentsEvaluation/MVRSM.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/InvestmentsEvaluation/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/InvestmentsEvaluation/investments_evaluation_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/InvestmentsEvaluation/investments_evaluation_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/InvestmentsEvaluation/stop_crits.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/LinearFactors/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/LinearFactors/linear_analysis.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/LinearFactors/linear_analysis_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/LinearFactors/linear_analysis_options.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/LinearFactors/linear_analysis_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/LinearFactors/linear_analysis_ts_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/LinearFactors/linear_analysis_ts_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/NTC/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/NTC/ntc_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/NTC/ntc_options.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/NTC/ntc_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/NTC/ntc_ts_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/NTC/ntc_ts_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/opf_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/opf_options.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/opf_ts_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/simple_dispatch_ts.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/ac_jacobian.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/acdc_jacobian.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/common_functions.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/derivatives.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/discrete_controls.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/fast_decoupled.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/gauss_power_flow.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/helm_power_flow.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/iwamoto_newton_raphson.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/levenberg_marquardt.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/levenberg_marquardt_acdc.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/linearized_power_flow.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson_acdc.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson_current.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson_decoupled.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson_ode.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/power_flow_options.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/power_flow_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/power_flow_ts_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/power_flow_ts_input.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/PowerFlow/power_flow_ts_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ShortCircuitStudies/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/SigmaAnalysis/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/SigmaAnalysis/sigma_analysis_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/StateEstimation/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/StateEstimation/state_estimation.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/StateEstimation/state_stimation_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Stochastic/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Stochastic/blackout_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Stochastic/latin_hypercube_sampling.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Stochastic/reliability_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Stochastic/stochastic_power_flow_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Stochastic/stochastic_power_flow_input.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Stochastic/stochastic_power_flow_results.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Topology/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/Topology/topology_driver.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/driver_template.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/driver_types.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/result_types.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/results_table.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/results_template.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/sparse_solve.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/MIP/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/MIP/pulp_interface.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/Sparse/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/Sparse/csc.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/Sparse/csc_numba.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/Sparse/utils.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/ThirdParty/SyntheticNetworks/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/ThirdParty/SyntheticNetworks/rpgm_algo.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/ThirdParty/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Utils/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/__init__.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/api.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/basic_structures.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/data_logger.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/enumerations.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/grid_analysis.py +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/setup.cfg +0 -0
- {GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/setup.py +0 -0
@@ -142,7 +142,8 @@ def compute_admittances(R: Vec,
|
|
142
142
|
c: Vec,
|
143
143
|
Yshunt_bus: CxVec,
|
144
144
|
conn: Union[List[WindingsConnection], ObjVec],
|
145
|
-
seq: int
|
145
|
+
seq: int,
|
146
|
+
add_windings_phase: bool = False) -> Admittance:
|
146
147
|
"""
|
147
148
|
Compute the complete admittance matrices for the general power flow methods (Newton-Raphson based)
|
148
149
|
|
@@ -166,6 +167,7 @@ def compute_admittances(R: Vec,
|
|
166
167
|
:param Yshunt_bus: array of shunts equivalent power per bus, from the shunt devices (p.u.)
|
167
168
|
:param seq: Sequence [0, 1, 2]
|
168
169
|
:param conn: array of windings connections (numpy array of WindingsConnection)
|
170
|
+
:param add_windings_phase: Add the phases of the transformer windings (for short circuits mainly)
|
169
171
|
:return: Admittance instance
|
170
172
|
"""
|
171
173
|
r30_deg = np.exp(1.0j * np.pi / 6.0)
|
@@ -212,14 +214,20 @@ def compute_admittances(R: Vec,
|
|
212
214
|
|
213
215
|
elif seq == 1: # positive sequence
|
214
216
|
|
215
|
-
|
216
|
-
|
217
|
-
|
217
|
+
if add_windings_phase:
|
218
|
+
# only need to include the phase shift of +-30 degrees
|
219
|
+
factor_psh = np.array([r30_deg if con == WindingsConnection.GD or con == WindingsConnection.SD else 1.0
|
220
|
+
for con in conn])
|
218
221
|
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
222
|
+
Yff = Gsw + (ys + bc2 + 1.0j * Beq) / (mp * mp * vtap_f * vtap_f)
|
223
|
+
Yft = -ys / (mp * np.exp(-1.0j * tap_angle) * vtap_f * vtap_t) * factor_psh
|
224
|
+
Ytf = -ys / (mp * np.exp(1.0j * tap_angle) * vtap_t * vtap_f) * np.conj(factor_psh)
|
225
|
+
Ytt = (ys + bc2) / (vtap_t * vtap_t)
|
226
|
+
else:
|
227
|
+
Yff = Gsw + (ys + bc2 + 1.0j * Beq) / (mp * mp * vtap_f * vtap_f)
|
228
|
+
Yft = -ys / (mp * np.exp(-1.0j * tap_angle) * vtap_f * vtap_t)
|
229
|
+
Ytf = -ys / (mp * np.exp(1.0j * tap_angle) * vtap_t * vtap_f)
|
230
|
+
Ytt = (ys + bc2) / (vtap_t * vtap_t)
|
223
231
|
|
224
232
|
else: # original
|
225
233
|
# Yff = Gsw + (ys + bc2 + 1.0j * Beq) / (mp * mp * vtap_f * vtap_f)
|
@@ -95,7 +95,8 @@ def calc_V_outage(nc: NumericalCircuit,
|
|
95
95
|
c=nc.branch_data.c[contingency_br_indices],
|
96
96
|
Yshunt_bus=np.zeros(nc.nbus),
|
97
97
|
conn=nc.branch_data.conn[contingency_br_indices],
|
98
|
-
seq=1
|
98
|
+
seq=1,
|
99
|
+
add_windings_phase=False)
|
99
100
|
|
100
101
|
# solve the modified HELM
|
101
102
|
_, V, _, norm_f = helm_coefficients_dY(dY=adm.Ybus,
|
@@ -33,9 +33,8 @@ from GridCalEngine.Core.DataStructures.load_data import LoadData
|
|
33
33
|
from GridCalEngine.Core.DataStructures.branch_data import BranchData
|
34
34
|
from GridCalEngine.Core.DataStructures.hvdc_data import HvdcData
|
35
35
|
from GridCalEngine.Core.DataStructures.bus_data import BusData
|
36
|
-
from GridCalEngine.basic_structures import Logger,
|
37
|
-
from GridCalEngine.Utils.MIP.selected_interface import
|
38
|
-
set_var_bounds, join)
|
36
|
+
from GridCalEngine.basic_structures import Logger, Vec, IntVec, BoolVec, StrVec, CxMat
|
37
|
+
from GridCalEngine.Utils.MIP.selected_interface import LpExp, LpVar, LpModel, lpDot, set_var_bounds, join
|
39
38
|
from GridCalEngine.enumerations import TransformerControlType, HvdcControlType, AvailableTransferMode
|
40
39
|
from GridCalEngine.Simulations.LinearFactors.linear_analysis import LinearAnalysis, LinearMultiContingencies
|
41
40
|
from GridCalEngine.Simulations.ATC.available_transfer_capacity_driver import compute_alpha
|
@@ -315,7 +314,7 @@ class BusNtcVars:
|
|
315
314
|
self.Pcalc = np.zeros((nt, n_elm), dtype=object)
|
316
315
|
self.inj_delta = np.zeros((nt, n_elm), dtype=object)
|
317
316
|
|
318
|
-
def get_values(self, Sbase: float) -> "BusNtcVars":
|
317
|
+
def get_values(self, Sbase: float, model: LpModel) -> "BusNtcVars":
|
319
318
|
"""
|
320
319
|
Return an instance of this class where the arrays content are not LP vars but their value
|
321
320
|
:return: BusVars
|
@@ -329,13 +328,11 @@ class BusNtcVars:
|
|
329
328
|
for t in range(nt):
|
330
329
|
|
331
330
|
for i in range(n_elm):
|
332
|
-
data.theta[t, i] =
|
333
|
-
data.shadow_prices[t, i] =
|
334
|
-
|
335
|
-
data.
|
336
|
-
|
337
|
-
data.Pcalc[t, i] = get_lp_var_value(self.Pcalc[t, i]) * Sbase
|
338
|
-
data.inj_delta[t, i] = get_lp_var_value(self.inj_delta[t, i])
|
331
|
+
data.theta[t, i] = model.get_value(self.theta[t, i])
|
332
|
+
data.shadow_prices[t, i] = model.get_dual_value(self.kirchhoff[t, i])
|
333
|
+
data.load_shedding[t, i] = model.get_value(self.load_shedding[t, i]) * Sbase
|
334
|
+
data.Pcalc[t, i] = model.get_value(self.Pcalc[t, i]) * Sbase
|
335
|
+
data.inj_delta[t, i] = model.get_value(self.inj_delta[t, i])
|
339
336
|
|
340
337
|
# format the arrays appropriately
|
341
338
|
data.theta = data.theta.astype(float, copy=False)
|
@@ -375,7 +372,7 @@ class BranchNtcVars:
|
|
375
372
|
# t, m, c, contingency, negative_slack, positive_slack
|
376
373
|
self.contingency_flow_data: List[Tuple[int, int, int, Union[float, LpVar, LpExp], LpVar, LpVar]] = list()
|
377
374
|
|
378
|
-
def get_values(self, Sbase: float) -> "BranchNtcVars":
|
375
|
+
def get_values(self, Sbase: float, model: LpModel) -> "BranchNtcVars":
|
379
376
|
"""
|
380
377
|
Return an instance of this class where the arrays content are not LP vars but their value
|
381
378
|
:return: BranchVars
|
@@ -387,19 +384,19 @@ class BranchNtcVars:
|
|
387
384
|
|
388
385
|
for t in range(nt):
|
389
386
|
for i in range(n_elm):
|
390
|
-
data.flows[t, i] =
|
391
|
-
data.flow_slacks_pos[t, i] =
|
392
|
-
data.flow_slacks_neg[t, i] =
|
393
|
-
data.tap_angles[t, i] =
|
394
|
-
data.flow_constraints_ub[t, i] =
|
395
|
-
data.flow_constraints_lb[t, i] =
|
387
|
+
data.flows[t, i] = model.get_value(self.flows[t, i]) * Sbase
|
388
|
+
data.flow_slacks_pos[t, i] = model.get_value(self.flow_slacks_pos[t, i]) * Sbase
|
389
|
+
data.flow_slacks_neg[t, i] = model.get_value(self.flow_slacks_neg[t, i]) * Sbase
|
390
|
+
data.tap_angles[t, i] = model.get_value(self.tap_angles[t, i])
|
391
|
+
data.flow_constraints_ub[t, i] = model.get_value(self.flow_constraints_ub[t, i])
|
392
|
+
data.flow_constraints_lb[t, i] = model.get_value(self.flow_constraints_lb[t, i])
|
396
393
|
|
397
394
|
for i in range(len(self.contingency_flow_data)):
|
398
395
|
t, m, c, var, neg_slack, pos_slack = self.contingency_flow_data[i]
|
399
396
|
self.contingency_flow_data[i] = (t, m, c,
|
400
|
-
|
401
|
-
|
402
|
-
|
397
|
+
model.get_value(var),
|
398
|
+
model.get_value(neg_slack),
|
399
|
+
model.get_value(pos_slack))
|
403
400
|
|
404
401
|
# format the arrays appropriately
|
405
402
|
data.flows = data.flows.astype(float, copy=False)
|
@@ -444,7 +441,7 @@ class HvdcNtcVars:
|
|
444
441
|
self.rates = np.zeros((nt, n_elm), dtype=float)
|
445
442
|
self.loading = np.zeros((nt, n_elm), dtype=float)
|
446
443
|
|
447
|
-
def get_values(self, Sbase: float) -> "HvdcNtcVars":
|
444
|
+
def get_values(self, Sbase: float, model: LpModel) -> "HvdcNtcVars":
|
448
445
|
"""
|
449
446
|
Return an instance of this class where the arrays content are not LP vars but their value
|
450
447
|
:return: HvdcVars
|
@@ -455,7 +452,7 @@ class HvdcNtcVars:
|
|
455
452
|
|
456
453
|
for t in range(nt):
|
457
454
|
for i in range(n_elm):
|
458
|
-
data.flows[t, i] =
|
455
|
+
data.flows[t, i] = model.get_value(self.flows[t, i]) * Sbase
|
459
456
|
|
460
457
|
# format the arrays appropriately
|
461
458
|
data.flows = data.flows.astype(float, copy=False)
|
@@ -500,7 +497,7 @@ class NtcVars:
|
|
500
497
|
# power shift
|
501
498
|
self.power_shift = np.zeros(nt, dtype=object)
|
502
499
|
|
503
|
-
def get_values(self, Sbase: float) -> "NtcVars":
|
500
|
+
def get_values(self, Sbase: float, model: LpModel) -> "NtcVars":
|
504
501
|
"""
|
505
502
|
Return an instance of this class where the arrays content are not LP vars but their value
|
506
503
|
:return: OpfVars instance
|
@@ -517,15 +514,15 @@ class NtcVars:
|
|
517
514
|
n_hvdc=self.n_hvdc,
|
518
515
|
model=self.model)
|
519
516
|
|
520
|
-
data.bus_vars = self.bus_vars.get_values(Sbase)
|
521
|
-
data.branch_vars = self.branch_vars.get_values(Sbase)
|
522
|
-
data.hvdc_vars = self.hvdc_vars.get_values(Sbase)
|
517
|
+
data.bus_vars = self.bus_vars.get_values(Sbase, model)
|
518
|
+
data.branch_vars = self.branch_vars.get_values(Sbase, model)
|
519
|
+
data.hvdc_vars = self.hvdc_vars.get_values(Sbase, model)
|
523
520
|
|
524
521
|
# todo: check if acceptable_solution must to be an array, one solution per hour
|
525
522
|
data.acceptable_solution = self.acceptable_solution
|
526
523
|
|
527
524
|
for t in range(nt):
|
528
|
-
data.power_shift[t] =
|
525
|
+
data.power_shift[t] = model.get_value(self.power_shift[t])
|
529
526
|
|
530
527
|
# format the arrays appropriately
|
531
528
|
data.power_shift = data.power_shift.astype(float, copy=False)
|
{GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/linear_opf_ts.py
RENAMED
@@ -34,8 +34,7 @@ from GridCalEngine.Core.DataStructures.branch_data import BranchData
|
|
34
34
|
from GridCalEngine.Core.DataStructures.hvdc_data import HvdcData
|
35
35
|
from GridCalEngine.Core.DataStructures.bus_data import BusData
|
36
36
|
from GridCalEngine.basic_structures import Logger, Vec, IntVec, DateVec
|
37
|
-
from GridCalEngine.Utils.MIP.selected_interface import
|
38
|
-
set_var_bounds, join)
|
37
|
+
from GridCalEngine.Utils.MIP.selected_interface import LpExp, LpVar, LpModel, lpDot, set_var_bounds, join
|
39
38
|
from GridCalEngine.enumerations import TransformerControlType, HvdcControlType
|
40
39
|
from GridCalEngine.Simulations.LinearFactors.linear_analysis import LinearAnalysis, LinearMultiContingency, \
|
41
40
|
LinearMultiContingencies
|
@@ -88,7 +87,7 @@ class BusVars:
|
|
88
87
|
self.kirchhoff = np.zeros((nt, n_elm), dtype=object)
|
89
88
|
self.shadow_prices = np.zeros((nt, n_elm), dtype=float)
|
90
89
|
|
91
|
-
def get_values(self, Sbase: float) -> "BusVars":
|
90
|
+
def get_values(self, Sbase: float, model: LpModel) -> "BusVars":
|
92
91
|
"""
|
93
92
|
Return an instance of this class where the arrays content are not LP vars but their value
|
94
93
|
:return: BusVars
|
@@ -100,10 +99,10 @@ class BusVars:
|
|
100
99
|
|
101
100
|
for t in range(nt):
|
102
101
|
for i in range(n_elm):
|
103
|
-
data.theta[t, i] =
|
104
|
-
data.Pcalc[t, i] =
|
105
|
-
data.branch_injections[t, i] =
|
106
|
-
data.shadow_prices[t, i] =
|
102
|
+
data.theta[t, i] = model.get_value(self.theta[t, i])
|
103
|
+
data.Pcalc[t, i] = model.get_value(self.Pcalc[t, i])
|
104
|
+
data.branch_injections[t, i] = model.get_value(self.branch_injections[t, i]) * Sbase
|
105
|
+
data.shadow_prices[t, i] = model.get_dual_value(self.kirchhoff[t, i])
|
107
106
|
|
108
107
|
# format the arrays aproprietly
|
109
108
|
data.theta = data.theta.astype(float, copy=False)
|
@@ -128,7 +127,7 @@ class LoadVars:
|
|
128
127
|
|
129
128
|
self.p = np.zeros((nt, n_elm), dtype=float) # to be filled (no vars)
|
130
129
|
|
131
|
-
def get_values(self, Sbase: float) -> "LoadVars":
|
130
|
+
def get_values(self, Sbase: float, model: LpModel) -> "LoadVars":
|
132
131
|
"""
|
133
132
|
Return an instance of this class where the arrays content are not LP vars but their value
|
134
133
|
:return: LoadVars
|
@@ -140,7 +139,7 @@ class LoadVars:
|
|
140
139
|
|
141
140
|
for t in range(nt):
|
142
141
|
for i in range(n_elm):
|
143
|
-
data.shedding[t, i] =
|
142
|
+
data.shedding[t, i] = model.get_value(self.shedding[t, i]) * Sbase
|
144
143
|
|
145
144
|
# format the arrays aproprietly
|
146
145
|
data.shedding = data.shedding.astype(float, copy=False)
|
@@ -165,7 +164,7 @@ class GenerationVars:
|
|
165
164
|
self.starting_up = np.zeros((nt, n_elm), dtype=object)
|
166
165
|
self.shutting_down = np.zeros((nt, n_elm), dtype=object)
|
167
166
|
|
168
|
-
def get_values(self, Sbase: float) -> "GenerationVars":
|
167
|
+
def get_values(self, Sbase: float, model: LpModel) -> "GenerationVars":
|
169
168
|
"""
|
170
169
|
Return an instance of this class where the arrays content are not LP vars but their value
|
171
170
|
:return: GenerationVars
|
@@ -175,11 +174,11 @@ class GenerationVars:
|
|
175
174
|
|
176
175
|
for t in range(nt):
|
177
176
|
for i in range(n_elm):
|
178
|
-
data.p[t, i] =
|
179
|
-
data.shedding[t, i] =
|
180
|
-
data.producing[t, i] =
|
181
|
-
data.starting_up[t, i] =
|
182
|
-
data.shutting_down[t, i] =
|
177
|
+
data.p[t, i] = model.get_value(self.p[t, i]) * Sbase
|
178
|
+
data.shedding[t, i] = model.get_value(self.shedding[t, i]) * Sbase
|
179
|
+
data.producing[t, i] = model.get_value(self.producing[t, i])
|
180
|
+
data.starting_up[t, i] = model.get_value(self.starting_up[t, i])
|
181
|
+
data.shutting_down[t, i] = model.get_value(self.shutting_down[t, i])
|
183
182
|
|
184
183
|
# format the arrays aproprietly
|
185
184
|
data.p = data.p.astype(float, copy=False)
|
@@ -205,7 +204,7 @@ class BatteryVars(GenerationVars):
|
|
205
204
|
GenerationVars.__init__(self, nt=nt, n_elm=n_elm)
|
206
205
|
self.e = np.zeros((nt, n_elm), dtype=object)
|
207
206
|
|
208
|
-
def get_values(self, Sbase: float) -> "BatteryVars":
|
207
|
+
def get_values(self, Sbase: float, model: LpModel) -> "BatteryVars":
|
209
208
|
"""
|
210
209
|
Return an instance of this class where the arrays content are not LP vars but their value
|
211
210
|
:return: GenerationVars
|
@@ -215,12 +214,12 @@ class BatteryVars(GenerationVars):
|
|
215
214
|
|
216
215
|
for t in range(nt):
|
217
216
|
for i in range(n_elm):
|
218
|
-
data.p[t, i] =
|
219
|
-
data.e[t, i] =
|
220
|
-
data.shedding[t, i] =
|
221
|
-
data.producing[t, i] =
|
222
|
-
data.starting_up[t, i] =
|
223
|
-
data.shutting_down[t, i] =
|
217
|
+
data.p[t, i] = model.get_value(self.p[t, i]) * Sbase
|
218
|
+
data.e[t, i] = model.get_value(self.e[t, i]) * Sbase
|
219
|
+
data.shedding[t, i] = model.get_value(self.shedding[t, i]) * Sbase
|
220
|
+
data.producing[t, i] = model.get_value(self.producing[t, i])
|
221
|
+
data.starting_up[t, i] = model.get_value(self.starting_up[t, i])
|
222
|
+
data.shutting_down[t, i] = model.get_value(self.shutting_down[t, i])
|
224
223
|
|
225
224
|
# format the arrays aproprietly
|
226
225
|
data.p = data.p.astype(float, copy=False)
|
@@ -257,31 +256,30 @@ class BranchVars:
|
|
257
256
|
# t, m, c, contingency, negative_slack, positive_slack
|
258
257
|
self.contingency_flow_data: List[Tuple[int, int, int, Union[float, LpVar, LpExp], LpVar, LpVar]] = list()
|
259
258
|
|
260
|
-
def get_values(self, Sbase: float) -> "BranchVars":
|
259
|
+
def get_values(self, Sbase: float, model: LpModel) -> "BranchVars":
|
261
260
|
"""
|
262
261
|
Return an instance of this class where the arrays content are not LP vars but their value
|
263
262
|
:return: BranchVars
|
264
263
|
"""
|
265
264
|
nt, n_elm = self.flows.shape
|
266
265
|
data = BranchVars(nt=nt, n_elm=n_elm)
|
267
|
-
|
268
266
|
data.rates = self.rates
|
269
267
|
|
270
268
|
for t in range(nt):
|
271
269
|
for i in range(n_elm):
|
272
|
-
data.flows[t, i] =
|
273
|
-
data.flow_slacks_pos[t, i] =
|
274
|
-
data.flow_slacks_neg[t, i] =
|
275
|
-
data.tap_angles[t, i] =
|
276
|
-
data.flow_constraints_ub[t, i] =
|
277
|
-
data.flow_constraints_lb[t, i] =
|
270
|
+
data.flows[t, i] = model.get_value(self.flows[t, i]) * Sbase
|
271
|
+
data.flow_slacks_pos[t, i] = model.get_value(self.flow_slacks_pos[t, i]) * Sbase
|
272
|
+
data.flow_slacks_neg[t, i] = model.get_value(self.flow_slacks_neg[t, i]) * Sbase
|
273
|
+
data.tap_angles[t, i] = model.get_value(self.tap_angles[t, i])
|
274
|
+
data.flow_constraints_ub[t, i] = model.get_value(self.flow_constraints_ub[t, i])
|
275
|
+
data.flow_constraints_lb[t, i] = model.get_value(self.flow_constraints_lb[t, i])
|
278
276
|
|
279
277
|
for i in range(len(self.contingency_flow_data)):
|
280
278
|
t, m, c, var, neg_slack, pos_slack = self.contingency_flow_data[i]
|
281
279
|
self.contingency_flow_data[i] = (t, m, c,
|
282
|
-
|
283
|
-
|
284
|
-
|
280
|
+
model.get_value(var),
|
281
|
+
model.get_value(neg_slack),
|
282
|
+
model.get_value(pos_slack))
|
285
283
|
|
286
284
|
# format the arrays aproprietly
|
287
285
|
data.flows = data.flows.astype(float, copy=False)
|
@@ -326,7 +324,7 @@ class HvdcVars:
|
|
326
324
|
self.rates = np.zeros((nt, n_elm), dtype=float)
|
327
325
|
self.loading = np.zeros((nt, n_elm), dtype=float)
|
328
326
|
|
329
|
-
def get_values(self, Sbase: float) -> "HvdcVars":
|
327
|
+
def get_values(self, Sbase: float, model: LpModel) -> "HvdcVars":
|
330
328
|
"""
|
331
329
|
Return an instance of this class where the arrays content are not LP vars but their value
|
332
330
|
:return: HvdcVars
|
@@ -337,7 +335,7 @@ class HvdcVars:
|
|
337
335
|
|
338
336
|
for t in range(nt):
|
339
337
|
for i in range(n_elm):
|
340
|
-
data.flows[t, i] =
|
338
|
+
data.flows[t, i] = model.get_value(self.flows[t, i]) * Sbase
|
341
339
|
|
342
340
|
# format the arrays aproprietly
|
343
341
|
data.flows = data.flows.astype(float, copy=False)
|
@@ -380,7 +378,7 @@ class OpfVars:
|
|
380
378
|
self.branch_vars = BranchVars(nt=nt, n_elm=nbr)
|
381
379
|
self.hvdc_vars = HvdcVars(nt=nt, n_elm=n_hvdc)
|
382
380
|
|
383
|
-
def get_values(self, Sbase: float) -> "OpfVars":
|
381
|
+
def get_values(self, Sbase: float, model: LpModel) -> "OpfVars":
|
384
382
|
"""
|
385
383
|
Return an instance of this class where the arrays content are not LP vars but their value
|
386
384
|
:return: OpfVars instance
|
@@ -392,12 +390,12 @@ class OpfVars:
|
|
392
390
|
nl=self.nl,
|
393
391
|
nbr=self.nbr,
|
394
392
|
n_hvdc=self.n_hvdc)
|
395
|
-
data.bus_vars = self.bus_vars.get_values(Sbase)
|
396
|
-
data.load_vars = self.load_vars.get_values(Sbase)
|
397
|
-
data.gen_vars = self.gen_vars.get_values(Sbase)
|
398
|
-
data.batt_vars = self.batt_vars.get_values(Sbase)
|
399
|
-
data.branch_vars = self.branch_vars.get_values(Sbase)
|
400
|
-
data.hvdc_vars = self.hvdc_vars.get_values(Sbase)
|
393
|
+
data.bus_vars = self.bus_vars.get_values(Sbase, model)
|
394
|
+
data.load_vars = self.load_vars.get_values(Sbase, model)
|
395
|
+
data.gen_vars = self.gen_vars.get_values(Sbase, model)
|
396
|
+
data.batt_vars = self.batt_vars.get_values(Sbase, model)
|
397
|
+
data.branch_vars = self.branch_vars.get_values(Sbase, model)
|
398
|
+
data.hvdc_vars = self.hvdc_vars.get_values(Sbase, model)
|
401
399
|
|
402
400
|
data.acceptable_solution = self.acceptable_solution
|
403
401
|
return data
|
@@ -636,8 +634,9 @@ def add_linear_battery_formulation(t: Union[int, None],
|
|
636
634
|
|
637
635
|
# power boundaries of the generator
|
638
636
|
if not skip_generation_limits:
|
639
|
-
batt_vars.p[t, k]
|
640
|
-
|
637
|
+
set_var_bounds(var=batt_vars.p[t, k],
|
638
|
+
lb=batt_data_t.availability[k] * batt_data_t.pmin[k] / Sbase,
|
639
|
+
ub=batt_data_t.availability[k] * batt_data_t.pmax[k] / Sbase)
|
641
640
|
|
642
641
|
# compute the time increment in hours
|
643
642
|
dt = (time_array[t] - time_array[t - 1]).seconds / 3600.0
|
@@ -994,8 +993,7 @@ def add_linear_node_balance(t_idx: int,
|
|
994
993
|
gen_vars: GenerationVars,
|
995
994
|
batt_vars: BatteryVars,
|
996
995
|
load_vars: LoadVars,
|
997
|
-
prob: LpModel
|
998
|
-
logger: Logger):
|
996
|
+
prob: LpModel):
|
999
997
|
"""
|
1000
998
|
Add the kirchoff nodal equality
|
1001
999
|
:param t_idx: time step
|
@@ -1027,13 +1025,10 @@ def add_linear_node_balance(t_idx: int,
|
|
1027
1025
|
|
1028
1026
|
# add the equality restrictions
|
1029
1027
|
for k in range(bus_data.nbus):
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
name=name)
|
1035
|
-
except AttributeError:
|
1036
|
-
logger.add_warning("Kirchoff 0=0", name, comment='Cannot enforce Pcalc zero=Pset zero')
|
1028
|
+
bus_vars.kirchhoff[t_idx, k] = prob.add_cst(
|
1029
|
+
cst=bus_vars.Pcalc[t_idx, k] == P_esp[k],
|
1030
|
+
name=join("kirchoff_", [t_idx, k], "_")
|
1031
|
+
)
|
1037
1032
|
|
1038
1033
|
for i in vd:
|
1039
1034
|
set_var_bounds(var=bus_vars.theta[t_idx, i], lb=0.0, ub=0.0)
|
@@ -1195,8 +1190,7 @@ def run_linear_opf_ts(grid: MultiCircuit,
|
|
1195
1190
|
gen_vars=mip_vars.gen_vars,
|
1196
1191
|
batt_vars=mip_vars.batt_vars,
|
1197
1192
|
load_vars=mip_vars.load_vars,
|
1198
|
-
prob=lp_model
|
1199
|
-
logger=logger)
|
1193
|
+
prob=lp_model)
|
1200
1194
|
|
1201
1195
|
# add branch contingencies ---------------------------------------------------------------------------------
|
1202
1196
|
if consider_contingencies:
|
@@ -1259,16 +1253,18 @@ def run_linear_opf_ts(grid: MultiCircuit,
|
|
1259
1253
|
|
1260
1254
|
# gather the results
|
1261
1255
|
if status == LpModel.OPTIMAL:
|
1262
|
-
|
1263
|
-
print('Objective value =', lp_model.fobj_value())
|
1256
|
+
logger.add_info("Objective function", value=lp_model.fobj_value())
|
1264
1257
|
mip_vars.acceptable_solution = True
|
1265
1258
|
else:
|
1266
|
-
|
1259
|
+
logger.add_error("The problem does not have an optimal solution.")
|
1267
1260
|
mip_vars.acceptable_solution = False
|
1268
1261
|
lp_file_name = grid.name + "_debug.lp"
|
1269
1262
|
lp_model.save_model(file_name=lp_file_name)
|
1270
|
-
|
1263
|
+
logger.add_info("Debug LP model saved", value=lp_file_name)
|
1264
|
+
|
1265
|
+
vars_v = mip_vars.get_values(grid.Sbase, model=lp_model)
|
1271
1266
|
|
1272
|
-
|
1267
|
+
# add the model logger to the main logger
|
1268
|
+
logger += lp_model.logger
|
1273
1269
|
|
1274
1270
|
return vars_v
|
{GridCalEngine-5.0.0a33 → GridCalEngine-5.0.2}/GridCalEngine/Simulations/OPF/opf_ts_driver.py
RENAMED
@@ -18,7 +18,6 @@ import datetime
|
|
18
18
|
|
19
19
|
import numpy as np
|
20
20
|
import pandas as pd
|
21
|
-
import time
|
22
21
|
from typing import Union
|
23
22
|
from GridCalEngine.basic_structures import TimeGrouping, get_time_groups
|
24
23
|
from GridCalEngine.Core.Devices.multi_circuit import MultiCircuit
|
@@ -213,8 +212,7 @@ class OptimalPowerFlowTimeSeriesDriver(TimeSeriesDriverTemplate):
|
|
213
212
|
self.results.generator_power[time_indices, :] = opf_vars.gen_vars.p
|
214
213
|
self.results.Sf[time_indices, :] = opf_vars.branch_vars.flows
|
215
214
|
self.results.St[time_indices, :] = -opf_vars.branch_vars.flows
|
216
|
-
self.results.overloads[time_indices,
|
217
|
-
:] = opf_vars.branch_vars.flow_slacks_pos - opf_vars.branch_vars.flow_slacks_neg
|
215
|
+
self.results.overloads[time_indices, :] = opf_vars.branch_vars.flow_slacks_pos - opf_vars.branch_vars.flow_slacks_neg
|
218
216
|
self.results.loading[time_indices, :] = opf_vars.branch_vars.loading
|
219
217
|
self.results.phase_shift[time_indices, :] = opf_vars.branch_vars.tap_angles
|
220
218
|
# self.results.Sbus[time_indices, :] = problem.get_power_injections()
|
@@ -46,8 +46,9 @@ class PowerFlowDriver(DriverTemplate):
|
|
46
46
|
"""
|
47
47
|
PowerFlowDriver class constructor
|
48
48
|
:param grid: MultiCircuit instance
|
49
|
-
:param options: PowerFlowOptions instance
|
50
|
-
:param opf_results: OptimalPowerFlowResults instance
|
49
|
+
:param options: PowerFlowOptions instance (optional)
|
50
|
+
:param opf_results: OptimalPowerFlowResults instance (optional)
|
51
|
+
:param engine: EngineType (i.e. EngineType.GridCal) (optional)
|
51
52
|
"""
|
52
53
|
|
53
54
|
DriverTemplate.__init__(self, grid=grid, engine=engine)
|