GridCalEngine 5.0.0a18__tar.gz → 5.0.0a19__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.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Compilers/circuit_to_bentayga.py +0 -2
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Compilers/circuit_to_data.py +17 -5
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Compilers/circuit_to_newton_pa.py +4 -3
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/__init__.py +1 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Diagrams/base_diagram.py +7 -7
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Diagrams/graphic_location.py +1 -1
- GridCalEngine-5.0.0a19/GridCalEngine/Core/Devices/Diagrams/map_diagram.py +75 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/__init__.py +1 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/generator.py +15 -80
- GridCalEngine-5.0.0a19/GridCalEngine/Core/Devices/Injections/generator_q_curve.py +219 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/editable_device.py +9 -4
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/multi_circuit.py +22 -5
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/bus_bar_section.py +1 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/switch.py +1 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/topological_node.py +1 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cim16/cim_devices.py +5 -4
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/file_handler.py +13 -2
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/gridcal/excel_interface.py +5 -4
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/gridcal/pack_unpack.py +9 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/others/dpx_parser.py +4 -2
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/raw_to_gridcal.py +1 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/rawx_parser_legacy.py +4 -2
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ATC/available_transfer_capacity_driver.py +3 -4
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ATC/available_transfer_capacity_ts_driver.py +2 -6
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_driver.py +3 -3
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_ts_driver.py +0 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_driver.py +12 -12
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_options.py +2 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_results.py +24 -3
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_ts_driver.py +6 -7
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/OPF/linear_opf_ts.py +63 -37
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/OPF/opf_driver.py +16 -10
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/OPF/opf_results.py +49 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/OPF/opf_ts_driver.py +17 -11
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/power_flow_driver.py +20 -19
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/power_flow_results.py +23 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/power_flow_ts_driver.py +16 -17
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/power_flow_worker.py +1 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit.py +7 -2
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_driver.py +47 -36
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_worker.py +31 -29
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/StateEstimation/state_stimation_driver.py +12 -8
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/driver_template.py +4 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/result_types.py +1 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/__version__.py +1 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/api.py +0 -9
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/basic_structures.py +1 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/enumerations.py +3 -1
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/PKG-INFO +1 -1
- GridCalEngine-5.0.0a18/GridCalEngine/Core/Devices/Diagrams/map_diagram.py +0 -35
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Compilers/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Compilers/circuit_to_optimods.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Compilers/circuit_to_pgm.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/DataStructures/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/DataStructures/battery_data.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/DataStructures/branch_data.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/DataStructures/bus_data.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/DataStructures/generator_data.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/DataStructures/hvdc_data.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/DataStructures/load_data.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/DataStructures/numerical_circuit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/DataStructures/shunt_data.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/area.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/contingency.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/contingency_group.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/country.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/emission_gas.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/fuel.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/investment.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/investments_group.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/technology.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Aggregation/zone.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Associations/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Associations/generator_emission.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Associations/generator_fuel.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Associations/generator_technology.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/branch.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/dc_line.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/hvdc_line.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/line.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/switch.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/tap_changer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/templates/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/templates/line_template.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/templates/overhead_line_type.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/templates/parent_branch.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/templates/sequence_line_type.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/templates/transformer_type.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/templates/underground_line.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/transformer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/transformer3w.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/upfc.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/vsc.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/winding.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/wire.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Diagrams/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Diagrams/bus_branch_diagram.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Diagrams/map_location.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Diagrams/node_breaker_diagram.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/battery.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/external_grid.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/injection_template.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/load.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/shunt.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/static_generator.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Substation/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Substation/bus.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Substation/connectivity_node.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Substation/substation.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/measurement.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/admittance_matrices.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/topology.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/base/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/base/base_circuit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/base/base_device.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/base/base_property.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/base/units.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_circuit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_data_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_enums.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_poperty.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_to_gridcal.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/cgmes_writer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/cgm_region.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/control_area.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/energy_area.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/geographical_region.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/load_area.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/merging_agent.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/modelling_authority.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/operational_limit_set.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/operational_limit_type.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/sub_geographical_region.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/aggregation/sub_load_area.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/base.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/current_limit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/dipole.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/equivalent_branch.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/line/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/line/ac_line_segment.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/line/line.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/tie_flow.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_non_linear.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_symmetrical.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_table.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_table_point.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/phase_tap_changer_tabular.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/power_transformer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/power_transformer_end.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/ratio_tap_changer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/ratio_tap_changer_table.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/ratio_tap_changer_table_point.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/tap_changer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/branches/transformer/tap_changer_control.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/conducting_equipment.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/equipment.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/equipment_container.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/equivalent_equipment.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/full_model.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/identified_object.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/energy_scheduling_type.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/energy_source.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/control_area_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/fossil_fuel.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/fuel_type.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/generating_unit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/hydro_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/hydro_power_plant.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/hydro_pump.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/nuclear_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/reactive_capability_curve.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/rotating_machine.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/solar_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/synchronous_machine.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/thermal_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/generation/wind_generating_unit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/conform_load.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/conform_load_group.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/energy_consumer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/equivalent_injection.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/equivalent_network.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/load_group.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/load_response_characteristic.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/non_conform_load.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/load/non_conform_load_group.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/monopole.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/power_systems_resource.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/regulating_cond_eq.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/regulating_control.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/shunt/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/shunt/linear_shunt_compensator.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/shunt/shunt_compensator.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/injections/shunt/static_var_compensator.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/inputs/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/inputs/curve.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/inputs/curve_data.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/sv_power_flow.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/sv_shunt_compensator_sections.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/sv_tap_step.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/sv_voltage.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/results/topological_island.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/acdc_terminal.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/base_voltage.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/breaker.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/bus_name_marker.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/connectivity_node.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/connectivity_node_container.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/connector.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/junction.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/load_breaker_switch.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/substation.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/voltage_level.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/substation/voltage_limit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cgmes_2_4_15/devices/terminal.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cim16/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cim16/cim_circuit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cim16/cim_data_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cim16/cim_enums.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/cim16/cim_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/db/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/db/base_db.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/db/cgmes_lookup_db.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/db/db_handler.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/db/file_system.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/cim/db/psse_lookup_db.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/dgs/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/dgs/dgs_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/epc/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/epc/epc_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/file_system.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/gridcal/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/gridcal/contingency_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/gridcal/generic_io_functions.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/gridcal/h5_interface.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/gridcal/json_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/gridcal/sqlite_interface.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/gridcal/zip_interface.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/matpower/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/matpower/matpower_branch_definitions.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/matpower/matpower_bus_definitions.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/matpower/matpower_gen_definitions.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/matpower/matpower_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/matpower/matpower_storage_definitions.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/others/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/others/ipa_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/others/plx_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/others/pypsa_parser.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/area.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/branch.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/bus.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/facts.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/fixed_shunt.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/generator.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/gne_device.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/induction_machine.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/inter_area.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/load.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/node.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/owner.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/psse_circuit.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/psse_object.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/psse_property.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/substation.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/switched_shunt.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/system_switching_device.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/transformer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/two_terminal_dc_line.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/vsc_dc_line.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/devices/zone.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/gridcal_to_raw.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/raw_functions.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/raw_parser_legacy.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/raw_parser_writer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/IO/raw/rawx_parser_writer.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/LICENSE.txt +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ATC/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Clustering/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Clustering/clustering.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Clustering/clustering_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Clustering/clustering_options.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Clustering/clustering_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContingencyAnalysis/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContingencyAnalysis/contingencies_report.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_options.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_ts_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_plan.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContingencyAnalysis/helm_contingencies.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContinuationPowerFlow/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Dynamics/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Dynamics/dynamic_modules.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Dynamics/transient_stability_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/InputsAnalysis/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/InputsAnalysis/inputs_analysis_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/InvestmentsEvaluation/MVRSM.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/InvestmentsEvaluation/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/InvestmentsEvaluation/investments_evaluation_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/InvestmentsEvaluation/investments_evaluation_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/InvestmentsEvaluation/stop_crits.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/LinearFactors/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/LinearFactors/linear_analysis.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_ts_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/NTC/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/NTC/ntc_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/NTC/ntc_opf.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/NTC/ntc_options.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/NTC/ntc_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/NTC/ntc_ts_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/NTC/ntc_ts_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/OPF/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/OPF/opf_options.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/OPF/opf_ts_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/OPF/simple_dispatch_ts.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/ac_jacobian.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/acdc_jacobian.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/common_functions.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/derivatives.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/discrete_controls.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/fast_decoupled.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/gauss_power_flow.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/helm_power_flow.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/iwamoto_newton_raphson.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/levenberg_marquardt.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/levenberg_marquardt_acdc.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/linearized_power_flow.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson_acdc.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson_current.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson_decoupled.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson_ode.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/power_flow_options.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/power_flow_ts_input.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/PowerFlow/power_flow_ts_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ShortCircuitStudies/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/SigmaAnalysis/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/SigmaAnalysis/sigma_analysis_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/StateEstimation/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/StateEstimation/state_estimation.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Stochastic/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Stochastic/blackout_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Stochastic/latin_hypercube_sampling.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Stochastic/reliability_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Stochastic/stochastic_power_flow_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Stochastic/stochastic_power_flow_input.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Stochastic/stochastic_power_flow_results.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Topology/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/Topology/topology_driver.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/driver_types.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/results_table.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/results_template.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Simulations/sparse_solve.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Sparse/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Sparse/csc.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Sparse/csc_numba.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Sparse/utils.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/ThirdParty/SyntheticNetworks/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/ThirdParty/SyntheticNetworks/rpgm_algo.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/ThirdParty/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/ThirdParty/ortools/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/ThirdParty/ortools/ortools_extra.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/__init__.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/data_logger.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/grid_analysis.py +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/setup.cfg +0 -0
- {GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/setup.py +0 -0
@@ -694,11 +694,9 @@ def bentayga_linear_matrices(circuit: MultiCircuit, distributed_slack=False):
|
|
694
694
|
def translate_bentayga_pf_results(grid: MultiCircuit, res) -> PowerFlowResults:
|
695
695
|
results = PowerFlowResults(n=grid.get_bus_number(),
|
696
696
|
m=grid.get_branch_number_wo_hvdc(),
|
697
|
-
n_tr=grid.get_transformers2w_number(),
|
698
697
|
n_hvdc=grid.get_hvdc_number(),
|
699
698
|
bus_names=res.names,
|
700
699
|
branch_names=res.names,
|
701
|
-
transformer_names=[],
|
702
700
|
hvdc_names=res.hvdc_names,
|
703
701
|
bus_types=res.bus_types)
|
704
702
|
|
{GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Compilers/circuit_to_data.py
RENAMED
@@ -292,8 +292,7 @@ def get_generator_data(circuit: MultiCircuit,
|
|
292
292
|
data.names[k] = elm.name
|
293
293
|
data.idtag[k] = elm.idtag
|
294
294
|
|
295
|
-
|
296
|
-
data.qmax[k] = elm.Qmax
|
295
|
+
|
297
296
|
data.controllable[k] = elm.is_controlled
|
298
297
|
data.installed_p[k] = elm.Snom
|
299
298
|
|
@@ -363,6 +362,14 @@ def get_generator_data(circuit: MultiCircuit,
|
|
363
362
|
elif elm.Vset != Vbus[i]:
|
364
363
|
logger.add_error('Different set points', elm.bus.name, elm.Vset, Vbus[i])
|
365
364
|
|
365
|
+
# reactive power limits, for the given power value
|
366
|
+
if elm.use_reactive_power_curve:
|
367
|
+
data.qmin[k] = elm.q_curve.get_qmin(data.p[i])
|
368
|
+
data.qmax[k] = elm.q_curve.get_qmax(data.p[i])
|
369
|
+
else:
|
370
|
+
data.qmin[k] = elm.Qmin
|
371
|
+
data.qmax[k] = elm.Qmax
|
372
|
+
|
366
373
|
data.C_bus_elm[i, k] = 1
|
367
374
|
|
368
375
|
return data
|
@@ -402,9 +409,6 @@ def get_battery_data(circuit: MultiCircuit,
|
|
402
409
|
data.names[k] = elm.name
|
403
410
|
data.idtag[k] = elm.idtag
|
404
411
|
|
405
|
-
data.qmin[k] = elm.Qmin
|
406
|
-
data.qmax[k] = elm.Qmax
|
407
|
-
|
408
412
|
data.controllable[k] = elm.is_controlled
|
409
413
|
data.installed_p[k] = elm.Snom
|
410
414
|
|
@@ -481,6 +485,14 @@ def get_battery_data(circuit: MultiCircuit,
|
|
481
485
|
elif elm.Vset != Vbus[i]:
|
482
486
|
logger.add_error('Different set points', elm.bus.name, elm.Vset, Vbus[i])
|
483
487
|
|
488
|
+
# reactive power limits, for the given power value
|
489
|
+
if elm.use_reactive_power_curve:
|
490
|
+
data.qmin[k] = elm.q_curve.get_qmin(data.p[i])
|
491
|
+
data.qmax[k] = elm.q_curve.get_qmax(data.p[i])
|
492
|
+
else:
|
493
|
+
data.qmin[k] = elm.Qmin
|
494
|
+
data.qmax[k] = elm.Qmax
|
495
|
+
|
484
496
|
data.C_bus_elm[i, k] = 1
|
485
497
|
|
486
498
|
return data
|
@@ -1130,8 +1130,8 @@ def get_newton_pa_linear_opf_options(opf_opt: "OptimalPowerFlowOptions",
|
|
1130
1130
|
bs.TimeGrouping.Monthly: npa.TimeGrouping.Monthly,
|
1131
1131
|
bs.TimeGrouping.Hourly: npa.TimeGrouping.Hourly}
|
1132
1132
|
|
1133
|
-
opt = npa.LinearOpfOptions()
|
1134
|
-
opt.solver = solver_dict[opf_opt.mip_solver]
|
1133
|
+
opt = npa.LinearOpfOptions(solver=solver_dict[opf_opt.mip_solver])
|
1134
|
+
# opt.solver = solver_dict[opf_opt.mip_solver]
|
1135
1135
|
opt.grouping = grouping_dict[opf_opt.grouping]
|
1136
1136
|
opt.unit_commitment = False
|
1137
1137
|
opt.compute_flows = opf_opt.zonal_grouping == ZonalGrouping.NoGrouping
|
@@ -1434,7 +1434,8 @@ def translate_newton_pa_opf_results(grid: MultiCircuit, res: "npa.NonlinearOpfRe
|
|
1434
1434
|
F=res.F,
|
1435
1435
|
T=res.T,
|
1436
1436
|
F_hvdc=res.hvdc_F,
|
1437
|
-
T_hvdc=res.hvdc_T
|
1437
|
+
T_hvdc=res.hvdc_T,
|
1438
|
+
bus_area_indices=grid.get_bus_area_indices())
|
1438
1439
|
|
1439
1440
|
results.Sbus = res.Scalc[0, :],
|
1440
1441
|
results.voltage = res.voltage[0, :],
|
{GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Branches/__init__.py
RENAMED
@@ -16,7 +16,7 @@
|
|
16
16
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
17
17
|
|
18
18
|
|
19
|
-
from GridCalEngine.Core.Devices.Branches.branch import Branch, BranchTemplate
|
19
|
+
from GridCalEngine.Core.Devices.Branches.branch import Branch, BranchTemplate, BranchType
|
20
20
|
from GridCalEngine.Core.Devices.Branches.dc_line import DcLine
|
21
21
|
from GridCalEngine.Core.Devices.Branches.line import Line
|
22
22
|
from GridCalEngine.Core.Devices.Branches.hvdc_line import HvdcLine
|
@@ -29,7 +29,7 @@ class PointsGroup:
|
|
29
29
|
Diagram
|
30
30
|
"""
|
31
31
|
|
32
|
-
def __init__(self, name=''):
|
32
|
+
def __init__(self, name: str = '') -> None:
|
33
33
|
"""
|
34
34
|
|
35
35
|
:param name: Diagram name
|
@@ -76,7 +76,8 @@ class PointsGroup:
|
|
76
76
|
|
77
77
|
return points
|
78
78
|
|
79
|
-
def parse_data(self,
|
79
|
+
def parse_data(self,
|
80
|
+
data: Dict[str, Dict[str, Union[int, float, List[Tuple[float, float]]]]],
|
80
81
|
obj_dict: Dict[str, EditableDevice]):
|
81
82
|
"""
|
82
83
|
Parse file data ito this class
|
@@ -176,10 +177,10 @@ class BaseDiagram:
|
|
176
177
|
# search for the device idtag and return the location, if not found return None
|
177
178
|
return group.query_point(device)
|
178
179
|
|
179
|
-
def get_properties_dict(self) -> Dict[str, Dict[str,
|
180
|
+
def get_properties_dict(self) -> Dict[str, Union[str, int, float, Dict[str, Union[GraphicLocation, MapLocation]]]]:
|
180
181
|
"""
|
181
|
-
|
182
|
-
:return:
|
182
|
+
get the properties dictionary to save
|
183
|
+
:return: dictionary to serialize
|
183
184
|
"""
|
184
185
|
data = {category: group.get_dict() for category, group in self.data.items()}
|
185
186
|
|
@@ -205,8 +206,7 @@ class BaseDiagram:
|
|
205
206
|
for category, loc_dict in data['data'].items():
|
206
207
|
|
207
208
|
points_group = PointsGroup(name=category)
|
208
|
-
points_group.parse_data(data=loc_dict,
|
209
|
-
obj_dict=obj_dict.get(category, dict()))
|
209
|
+
points_group.parse_data(data=loc_dict, obj_dict=obj_dict.get(category, dict()))
|
210
210
|
self.data[category] = points_group
|
211
211
|
|
212
212
|
def build_graph(self):
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# GridCal
|
2
|
+
# Copyright (C) 2015 - 2023 Santiago Peñate Vera
|
3
|
+
#
|
4
|
+
# This program is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 3 of the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public License
|
15
|
+
# along with this program; if not, write to the Free Software Foundation,
|
16
|
+
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
17
|
+
from typing import Dict, Union, List, Tuple
|
18
|
+
from GridCalEngine.Core.Devices.Diagrams.base_diagram import BaseDiagram, PointsGroup
|
19
|
+
from GridCalEngine.Core.Devices.Diagrams.graphic_location import GraphicLocation
|
20
|
+
from GridCalEngine.Core.Devices.Diagrams.map_location import MapLocation
|
21
|
+
from GridCalEngine.Core.Devices.editable_device import EditableDevice
|
22
|
+
from GridCalEngine.enumerations import DiagramType, DeviceType
|
23
|
+
|
24
|
+
|
25
|
+
class MapDiagram(BaseDiagram):
|
26
|
+
"""
|
27
|
+
MapDiagram
|
28
|
+
"""
|
29
|
+
|
30
|
+
def __init__(self, idtag: Union[None, str] = None, name: str = '',
|
31
|
+
tile_source: str = '', start_level: int = 11,
|
32
|
+
longitude: float = -15.41, latitude: float = 40.11) -> None:
|
33
|
+
"""
|
34
|
+
MapDiagram
|
35
|
+
:param idtag: uuid
|
36
|
+
:param name: name of the diagram
|
37
|
+
:param tile_source: tiles' source
|
38
|
+
:param start_level: zoom level
|
39
|
+
"""
|
40
|
+
BaseDiagram.__init__(self, idtag=idtag, name=name, diagram_type=DiagramType.SubstationLineMap)
|
41
|
+
|
42
|
+
self.tile_source = tile_source
|
43
|
+
|
44
|
+
self.start_level = start_level
|
45
|
+
|
46
|
+
self.longitude = longitude # longitude
|
47
|
+
|
48
|
+
self.latitude = latitude # latitude
|
49
|
+
|
50
|
+
def get_properties_dict(self) -> Dict[str, Union[str, int, float, Dict[str, Union[GraphicLocation, MapLocation]]]]:
|
51
|
+
"""
|
52
|
+
get the properties dictionary to save
|
53
|
+
:return: dictionary to serialize
|
54
|
+
"""
|
55
|
+
data = super().get_properties_dict()
|
56
|
+
data['tile_source'] = self.tile_source
|
57
|
+
data['start_level'] = self.start_level
|
58
|
+
data['longitude'] = self.longitude
|
59
|
+
data['latitude'] = self.latitude
|
60
|
+
return data
|
61
|
+
|
62
|
+
def parse_data(self,
|
63
|
+
data: Dict[str, Dict[str, Dict[str, Union[int, float]]]],
|
64
|
+
obj_dict: Dict[str, Dict[str, EditableDevice]]):
|
65
|
+
"""
|
66
|
+
Parse file data ito this class
|
67
|
+
:param data: json dictionary
|
68
|
+
:param obj_dict: dictionary of circuit objects by type to fincd the api objects back from file loading
|
69
|
+
"""
|
70
|
+
super().parse_data(data=data, obj_dict=obj_dict)
|
71
|
+
|
72
|
+
self.tile_source = data.get('tile_source', '')
|
73
|
+
self.start_level = data.get('start_level', 11)
|
74
|
+
self.longitude = data.get('longitude', -15.41)
|
75
|
+
self.latitude = data.get('latitude', 40.11)
|
{GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/__init__.py
RENAMED
@@ -21,3 +21,4 @@ from GridCalEngine.Core.Devices.Injections.generator import Generator
|
|
21
21
|
from GridCalEngine.Core.Devices.Injections.load import Load
|
22
22
|
from GridCalEngine.Core.Devices.Injections.shunt import Shunt
|
23
23
|
from GridCalEngine.Core.Devices.Injections.static_generator import StaticGenerator
|
24
|
+
from GridCalEngine.Core.Devices.Injections.generator_q_curve import GeneratorQCurve
|
{GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/Injections/generator.py
RENAMED
@@ -23,70 +23,7 @@ from GridCalEngine.basic_structures import Logger, Vec, Mat
|
|
23
23
|
from GridCalEngine.enumerations import DeviceType, BuildStatus
|
24
24
|
from GridCalEngine.Core.Devices.Aggregation.technology import Technology
|
25
25
|
from GridCalEngine.Core.Devices.Injections.injection_template import InjectionTemplate
|
26
|
-
|
27
|
-
|
28
|
-
def make_default_q_curve(Snom: float, Qmin: float, Qmax: float, n: int = 3) -> Mat:
|
29
|
-
"""
|
30
|
-
Compute the generator capability curve
|
31
|
-
:param Snom: Nominal power
|
32
|
-
:param Qmin: Minimum reactive power
|
33
|
-
:param Qmax: Maximum reactive power
|
34
|
-
:param n: number of points, at least 3
|
35
|
-
:return: Array of points [(P1, Qmin1, Qmax1), (P2, Qmin2, Qmax2), ...]
|
36
|
-
"""
|
37
|
-
assert (n > 2)
|
38
|
-
pts = np.zeros((n, 3))
|
39
|
-
s2 = Snom * Snom
|
40
|
-
|
41
|
-
Qmax2 = Qmax if Qmax < Snom else Snom
|
42
|
-
Qmin2 = Qmin if Qmin > -Snom else -Snom
|
43
|
-
|
44
|
-
# Compute the intersections of the Qlimits with the natural curve
|
45
|
-
p0_max = np.sqrt(s2 - Qmax2 * Qmax2)
|
46
|
-
p0_min = np.sqrt(s2 - Qmin2 * Qmin2)
|
47
|
-
p0 = min(p0_max, p0_min) # pick the lower limit as the starting point for sampling
|
48
|
-
|
49
|
-
pts[1:, 0] = np.linspace(p0, Snom, n - 1)
|
50
|
-
pts[0, 0] = 0
|
51
|
-
pts[0, 1] = Qmin2
|
52
|
-
pts[0, 2] = Qmax2
|
53
|
-
|
54
|
-
for i in range(1, n):
|
55
|
-
p2 = pts[i, 0] * pts[i, 0] # P^2
|
56
|
-
q = np.sqrt(s2 - p2) # point that naturally matches Q = sqrt(S^2 - P^2)
|
57
|
-
|
58
|
-
# assign the natural point if it does not violates the limits imposes, else set the limit
|
59
|
-
qmin = -q if -q > Qmin2 else Qmin2
|
60
|
-
qmax = q if q < Qmax2 else Qmax2
|
61
|
-
|
62
|
-
# Enforce that Qmax > Qmin
|
63
|
-
if qmax < qmin:
|
64
|
-
qmax = qmin
|
65
|
-
if qmin > qmax:
|
66
|
-
qmin = qmax
|
67
|
-
|
68
|
-
# Assign the points
|
69
|
-
pts[i, 1] = qmin
|
70
|
-
pts[i, 2] = qmax
|
71
|
-
|
72
|
-
return pts
|
73
|
-
|
74
|
-
|
75
|
-
def get_q_limits(q_points: Mat, p: Vec) -> Tuple[Vec, Vec]:
|
76
|
-
"""
|
77
|
-
Get the reactive power limits
|
78
|
-
:param q_points: Array of points [(P1, Qmin1, Qmax1), (P2, Qmin2, Qmax2), ...]
|
79
|
-
:param p: active power value (or array)
|
80
|
-
:return:
|
81
|
-
"""
|
82
|
-
all_p = q_points[:, 0]
|
83
|
-
all_qmin = q_points[:, 1]
|
84
|
-
all_qmax = q_points[:, 2]
|
85
|
-
|
86
|
-
qmin = np.interp(p, all_p, all_qmin)
|
87
|
-
qmax = np.interp(p, all_p, all_qmax)
|
88
|
-
|
89
|
-
return qmin, qmax
|
26
|
+
from GridCalEngine.Core.Devices.Injections.generator_q_curve import GeneratorQCurve
|
90
27
|
|
91
28
|
|
92
29
|
class Generator(InjectionTemplate):
|
@@ -246,11 +183,14 @@ class Generator(InjectionTemplate):
|
|
246
183
|
# Maximum reactive power in MVAr
|
247
184
|
self.qmax_set = Qmax
|
248
185
|
|
186
|
+
# declare the generation curve
|
187
|
+
self.q_curve = GeneratorQCurve()
|
188
|
+
|
249
189
|
if q_points is not None:
|
250
|
-
self.
|
190
|
+
self.q_curve.set_data(np.array(q_points))
|
251
191
|
self.custom_q_points = True
|
252
192
|
else:
|
253
|
-
self.
|
193
|
+
self.q_curve.make_default_q_curve(self.Snom, self.qmin_set, self.qmax_set, n=1)
|
254
194
|
self.custom_q_points = False
|
255
195
|
|
256
196
|
self.Cost2 = 0.0 # Cost of operation €/MW²
|
@@ -298,6 +238,9 @@ class Generator(InjectionTemplate):
|
|
298
238
|
self.register(key='Qmax', units='MVAr', tpe=float, definition='Maximum reactive power.')
|
299
239
|
self.register(key='use_reactive_power_curve', units='', tpe=bool,
|
300
240
|
definition='Use the reactive power capability curve?')
|
241
|
+
self.register(key='q_curve', units='MVAr', tpe=DeviceType.GeneratorQCurve,
|
242
|
+
definition='Capability curve data (double click on the generator to edit)',
|
243
|
+
editable=False, display=False)
|
301
244
|
self.register(key='Pmin', units='MW', tpe=float, definition='Minimum active power. Used in OPF.')
|
302
245
|
self.register(key='Pmax', units='MW', tpe=float, definition='Maximum active power. Used in OPF.')
|
303
246
|
self.register(key='R1', units='p.u.', tpe=float, definition='Total positive sequence resistance.')
|
@@ -429,6 +372,8 @@ class Generator(InjectionTemplate):
|
|
429
372
|
'snom': self.Snom,
|
430
373
|
'qmin': self.Qmin,
|
431
374
|
'qmax': self.Qmax,
|
375
|
+
'q_curve': self.q_curve.str(),
|
376
|
+
|
432
377
|
'pmin': self.Pmin,
|
433
378
|
'pmax': self.Pmax,
|
434
379
|
'cost2': self.Cost2,
|
@@ -558,12 +503,7 @@ class Generator(InjectionTemplate):
|
|
558
503
|
Return the reactive power upper limit
|
559
504
|
:return: value
|
560
505
|
"""
|
561
|
-
|
562
|
-
all_p = self.q_points[:, 0]
|
563
|
-
all_qmax = self.q_points[:, 2]
|
564
|
-
return np.interp(self.P, all_p, all_qmax)
|
565
|
-
else:
|
566
|
-
return self.qmax_set
|
506
|
+
return self.qmax_set
|
567
507
|
|
568
508
|
@Qmax.setter
|
569
509
|
def Qmax(self, val):
|
@@ -575,12 +515,7 @@ class Generator(InjectionTemplate):
|
|
575
515
|
Return the reactive power lower limit
|
576
516
|
:return: value
|
577
517
|
"""
|
578
|
-
|
579
|
-
all_p = self.q_points[:, 0]
|
580
|
-
all_qmin = self.q_points[:, 1]
|
581
|
-
return np.interp(self.P, all_p, all_qmin)
|
582
|
-
else:
|
583
|
-
return self.qmin_set
|
518
|
+
return self.qmin_set
|
584
519
|
|
585
520
|
@Qmin.setter
|
586
521
|
def Qmin(self, val):
|
@@ -602,5 +537,5 @@ class Generator(InjectionTemplate):
|
|
602
537
|
:param val: float value
|
603
538
|
"""
|
604
539
|
self._Snom = val
|
605
|
-
if not self.custom_q_points:
|
606
|
-
|
540
|
+
# if not self.custom_q_points:
|
541
|
+
# self.q_curve.make_default_q_curve(self._Snom, self.qmin_set, self.qmax_set)
|
@@ -0,0 +1,219 @@
|
|
1
|
+
# GridCal
|
2
|
+
# Copyright (C) 2015 - 2023 Santiago Peñate Vera
|
3
|
+
#
|
4
|
+
# This program is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU Lesser General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 3 of the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public License
|
15
|
+
# along with this program; if not, write to the Free Software Foundation,
|
16
|
+
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
17
|
+
import json
|
18
|
+
import numpy as np
|
19
|
+
from typing import Tuple
|
20
|
+
from matplotlib.pyplot import axis
|
21
|
+
from matplotlib import pyplot as plt
|
22
|
+
from GridCalEngine.basic_structures import Mat
|
23
|
+
|
24
|
+
|
25
|
+
class GeneratorQCurve:
|
26
|
+
"""
|
27
|
+
GeneratorQCurve
|
28
|
+
"""
|
29
|
+
|
30
|
+
def __init__(self):
|
31
|
+
|
32
|
+
# Array of points [(P1, Qmin1, Qmax1), (P2, Qmin2, Qmax2), ...]
|
33
|
+
self._q_points: Mat = np.zeros((0, 3))
|
34
|
+
|
35
|
+
def set_data(self, data: Mat):
|
36
|
+
"""
|
37
|
+
Set the data
|
38
|
+
:param data: numpy array with [(P1, Qmin1, Qmax1), (P2, Qmin2, Qmax2), ...], must have 3 rows or more
|
39
|
+
"""
|
40
|
+
assert data.shape[1] == 3 # must have exactly 3 columns: P, Qmin, Qmax
|
41
|
+
assert data.shape[0] > 0 # must have at leat one point
|
42
|
+
self._q_points = data
|
43
|
+
|
44
|
+
def get_data(self):
|
45
|
+
return self._q_points
|
46
|
+
|
47
|
+
def get_data_by_type(self):
|
48
|
+
|
49
|
+
return self._q_points[:, 0], self._q_points[:, 1], self._q_points[:, 2]
|
50
|
+
|
51
|
+
def make_default_q_curve(self, Snom: float, Qmin: float, Qmax: float, n: int = 3):
|
52
|
+
"""
|
53
|
+
Compute the theoretical generator capability curve
|
54
|
+
:param Snom: Nominal power
|
55
|
+
:param Qmin: Minimum reactive power
|
56
|
+
:param Qmax: Maximum reactive power
|
57
|
+
:param n: number of points, at least 3
|
58
|
+
"""
|
59
|
+
self._q_points = np.zeros((n, 3))
|
60
|
+
|
61
|
+
if n > 1:
|
62
|
+
|
63
|
+
s2 = Snom * Snom
|
64
|
+
|
65
|
+
Qmax2 = Qmax if Qmax < Snom else Snom
|
66
|
+
Qmin2 = Qmin if Qmin > -Snom else -Snom
|
67
|
+
|
68
|
+
# Compute the intersections of the Qlimits with the natural curve
|
69
|
+
p0_max = np.sqrt(s2 - Qmax2 * Qmax2)
|
70
|
+
p0_min = np.sqrt(s2 - Qmin2 * Qmin2)
|
71
|
+
p0 = min(p0_max, p0_min) # pick the lower limit as the starting point for sampling
|
72
|
+
|
73
|
+
# generate evenly spaced active power points from 0 to Snom
|
74
|
+
self._q_points[1:, 0] = np.linspace(p0, Snom, n - 1)
|
75
|
+
|
76
|
+
# enter the base points
|
77
|
+
self._q_points[0, 0] = 0
|
78
|
+
self._q_points[0, 1] = Qmin2
|
79
|
+
self._q_points[0, 2] = Qmax2
|
80
|
+
|
81
|
+
for i in range(1, n):
|
82
|
+
p2 = self._q_points[i, 0] * self._q_points[i, 0] # P^2
|
83
|
+
q = np.sqrt(s2 - p2) # point that naturally matches Q = sqrt(S^2 - P^2)
|
84
|
+
|
85
|
+
# assign the natural point if it does not violates the limits imposes, else set the limit
|
86
|
+
qmin = -q if -q > Qmin2 else Qmin2
|
87
|
+
qmax = q if q < Qmax2 else Qmax2
|
88
|
+
|
89
|
+
# Enforce that Qmax > Qmin
|
90
|
+
if qmax < qmin:
|
91
|
+
qmax = qmin
|
92
|
+
if qmin > qmax:
|
93
|
+
qmin = qmax
|
94
|
+
|
95
|
+
# Assign the points
|
96
|
+
self._q_points[i, 1] = qmin
|
97
|
+
self._q_points[i, 2] = qmax
|
98
|
+
|
99
|
+
else:
|
100
|
+
self._q_points[0, 0] = 0
|
101
|
+
self._q_points[0, 1] = Qmin
|
102
|
+
self._q_points[0, 2] = Qmax
|
103
|
+
|
104
|
+
def get_q_limits(self, p: float) -> Tuple[float, float]:
|
105
|
+
"""
|
106
|
+
Get the reactive power limits
|
107
|
+
:param p: active power value (or array)
|
108
|
+
:return: Qmin (float), Qmax (float)
|
109
|
+
"""
|
110
|
+
if self._q_points.shape[0] > 1:
|
111
|
+
all_p = self._q_points[:, 0]
|
112
|
+
all_qmin = self._q_points[:, 1]
|
113
|
+
all_qmax = self._q_points[:, 2]
|
114
|
+
|
115
|
+
qmin = np.interp(p, all_p, all_qmin)
|
116
|
+
qmax = np.interp(p, all_p, all_qmax)
|
117
|
+
|
118
|
+
return qmin, qmax
|
119
|
+
else:
|
120
|
+
return self._q_points[0, 1], self._q_points[0, 2]
|
121
|
+
|
122
|
+
def get_qmax(self, p: float) -> float:
|
123
|
+
"""
|
124
|
+
Get Qmax
|
125
|
+
:param p: active power value in MW
|
126
|
+
:return: Qmax in MVAr
|
127
|
+
"""
|
128
|
+
if self._q_points.shape[0] > 1:
|
129
|
+
return np.interp(p, self._q_points[:, 0], self._q_points[:, 2])
|
130
|
+
else:
|
131
|
+
return self._q_points[0, 2]
|
132
|
+
|
133
|
+
def get_qmin(self, p: float) -> float:
|
134
|
+
"""
|
135
|
+
Get Qmin
|
136
|
+
:param p: active power value in MW
|
137
|
+
:return: Qmin in MVAr
|
138
|
+
"""
|
139
|
+
if self._q_points.shape[0] > 1:
|
140
|
+
return np.interp(p, self._q_points[:, 0], self._q_points[:, 1])
|
141
|
+
else:
|
142
|
+
return self._q_points[0, 1]
|
143
|
+
|
144
|
+
def __str__(self):
|
145
|
+
"""
|
146
|
+
Get string representation of the curve
|
147
|
+
:return: json string of list of lists: "[[P1, Qmin1, Qmax1], [P2, Qmin2, Qmax2], ...]"
|
148
|
+
"""
|
149
|
+
return self.str()
|
150
|
+
|
151
|
+
def str(self) -> str:
|
152
|
+
"""
|
153
|
+
Get string representation of the curve
|
154
|
+
:return: json string of list of lists: "[[P1, Qmin1, Qmax1], [P2, Qmin2, Qmax2], ...]"
|
155
|
+
"""
|
156
|
+
return json.dumps(self._q_points.tolist())
|
157
|
+
|
158
|
+
def parse(self, val: str):
|
159
|
+
"""
|
160
|
+
Parse json curve data
|
161
|
+
:param val: string value: "[[P1, Qmin1, Qmax1], [P2, Qmin2, Qmax2], ...]"
|
162
|
+
"""
|
163
|
+
data = json.loads(val)
|
164
|
+
n = len(data)
|
165
|
+
self._q_points = np.zeros((n, 3))
|
166
|
+
for i, row in enumerate(data):
|
167
|
+
self._q_points[i, 0] = row[0]
|
168
|
+
self._q_points[i, 1] = row[1]
|
169
|
+
self._q_points[i, 2] = row[2]
|
170
|
+
|
171
|
+
def get_Qmin(self):
|
172
|
+
|
173
|
+
return self._q_points[:, 1].min()
|
174
|
+
|
175
|
+
def get_Qmax(self):
|
176
|
+
|
177
|
+
return self._q_points[:, 2].max()
|
178
|
+
|
179
|
+
def get_Pmin(self):
|
180
|
+
|
181
|
+
return self._q_points[:, 0].min()
|
182
|
+
|
183
|
+
def get_Pmax(self):
|
184
|
+
|
185
|
+
return self._q_points[:, 0].max()
|
186
|
+
|
187
|
+
def get_Snom(self):
|
188
|
+
|
189
|
+
qmin = self._q_points[:, 1].min()
|
190
|
+
qmax = self._q_points[:, 2].max()
|
191
|
+
|
192
|
+
qfinal = max(abs(qmin), abs(qmax))
|
193
|
+
pmax = self._q_points[:, 0].max()
|
194
|
+
|
195
|
+
return np.sqrt(pmax * pmax + qfinal * qfinal)
|
196
|
+
|
197
|
+
def plot(self, ax: plt.axis):
|
198
|
+
"""
|
199
|
+
|
200
|
+
:param ax:
|
201
|
+
:return:
|
202
|
+
"""
|
203
|
+
x = self._q_points[:, 0]
|
204
|
+
y1 = self._q_points[:, 1]
|
205
|
+
y2 = self._q_points[:, 2]
|
206
|
+
ax.plot(x, y1,
|
207
|
+
color='red',
|
208
|
+
marker='o',
|
209
|
+
linestyle='solid',
|
210
|
+
linewidth=2,
|
211
|
+
markersize=4)
|
212
|
+
ax.plot(x, y2,
|
213
|
+
color='red',
|
214
|
+
marker='o',
|
215
|
+
linestyle='solid',
|
216
|
+
linewidth=2,
|
217
|
+
markersize=4)
|
218
|
+
ax.set_xlabel("Q (MVAr)")
|
219
|
+
ax.set_ylabel("P (MW)")
|
{GridCalEngine-5.0.0a18 → GridCalEngine-5.0.0a19}/GridCalEngine/Core/Devices/editable_device.py
RENAMED
@@ -277,15 +277,17 @@ class EditableDevice:
|
|
277
277
|
data = list()
|
278
278
|
for name, properties in self.editable_headers.items():
|
279
279
|
obj = getattr(self, name)
|
280
|
-
if properties.tpe
|
280
|
+
if properties.tpe in [str, float, int, bool]:
|
281
|
+
data.append(obj)
|
282
|
+
elif properties.tpe == DeviceType.GeneratorQCurve:
|
283
|
+
data.append(obj.str())
|
284
|
+
else:
|
281
285
|
# if the object is not of a primary type, get the idtag instead
|
282
286
|
if hasattr(obj, 'idtag'):
|
283
287
|
data.append(obj.idtag)
|
284
288
|
else:
|
285
289
|
# some data types might not have the idtag, ten just use the str method
|
286
290
|
data.append(str(obj))
|
287
|
-
else:
|
288
|
-
data.append(obj)
|
289
291
|
return data
|
290
292
|
|
291
293
|
def get_headers(self) -> List[AnyStr]:
|
@@ -421,7 +423,10 @@ class EditableDevice:
|
|
421
423
|
"""
|
422
424
|
tpe = type(self)
|
423
425
|
|
424
|
-
new_obj = tpe(
|
426
|
+
new_obj = tpe(name=self.name,
|
427
|
+
idtag=self.idtag,
|
428
|
+
device_type=self.device_type,
|
429
|
+
code=self.code)
|
425
430
|
|
426
431
|
for prop_name, value in self.__dict__.items():
|
427
432
|
setattr(new_obj, prop_name, value)
|