GridCalEngine 5.3.18__tar.gz → 5.3.19__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.
Files changed (778) hide show
  1. gridcalengine-5.3.19/GridCalEngine/Compilers/circuit_to_gslv.py +1581 -0
  2. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/numerical_circuit.py +214 -93
  3. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/area.py +0 -1
  4. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/line.py +57 -19
  5. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/line_locations.py +10 -0
  6. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/overhead_line_type.py +327 -147
  7. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Diagrams/graphic_location.py +3 -3
  8. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Parents/branch_parent.py +35 -3
  9. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Parents/editable_device.py +85 -1
  10. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Substation/bus.py +12 -0
  11. gridcalengine-5.3.19/GridCalEngine/Devices/admittance_matrix.py +106 -0
  12. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/assets.py +15 -1
  13. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/multi_circuit.py +91 -100
  14. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/file_handler.py +5 -4
  15. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/h5_interface.py +1 -1
  16. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/pack_unpack.py +46 -17
  17. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/bus.py +3 -3
  18. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/psse_object.py +1 -2
  19. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/Methods/linear_contingency_analysis.py +5 -4
  20. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/Methods/nonlinear_contingency_analysis.py +8 -11
  21. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/Methods/optimal_linear_contingency_analysis.py +3 -3
  22. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_driver.py +7 -7
  23. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_ts_driver.py +1 -1
  24. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Dynamics/transient_stability_driver.py +3 -2
  25. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/LinearFactors/linear_analysis.py +6 -4
  26. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Topology/topology.py +2 -19
  27. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/MVRSM_mo_pareto.py +224 -64
  28. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/__version__.py +1 -1
  29. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/enumerations.py +1 -0
  30. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/PKG-INFO +1 -1
  31. gridcalengine-5.3.18/GridCalEngine/Compilers/circuit_to_gslv.py +0 -1219
  32. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Compilers/__init__.py +0 -0
  33. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Compilers/circuit_to_bentayga.py +0 -0
  34. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Compilers/circuit_to_data.py +0 -0
  35. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Compilers/circuit_to_newton_pa.py +0 -0
  36. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Compilers/circuit_to_optimods.py +0 -0
  37. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Compilers/circuit_to_pgm.py +0 -0
  38. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/__init__.py +0 -0
  39. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/active_branch_data.py +0 -0
  40. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/battery_data.py +0 -0
  41. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/branch_parent_data.py +0 -0
  42. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/bus_data.py +0 -0
  43. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/fluid_node_data.py +0 -0
  44. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/fluid_p2x_data.py +0 -0
  45. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/fluid_path_data.py +0 -0
  46. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/fluid_pump_data.py +0 -0
  47. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/fluid_turbine_data.py +0 -0
  48. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/generator_data.py +0 -0
  49. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/hvdc_data.py +0 -0
  50. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/load_data.py +0 -0
  51. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/passive_branch_data.py +0 -0
  52. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/shunt_data.py +0 -0
  53. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/DataStructures/vsc_data.py +0 -0
  54. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/__init__.py +0 -0
  55. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/branch_group.py +0 -0
  56. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/community.py +0 -0
  57. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/contingency.py +0 -0
  58. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/contingency_group.py +0 -0
  59. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/country.py +0 -0
  60. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/facility.py +0 -0
  61. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/inter_aggregation_info.py +0 -0
  62. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/investment.py +0 -0
  63. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/investments_group.py +0 -0
  64. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/modelling_authority.py +0 -0
  65. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/municipality.py +0 -0
  66. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/region.py +0 -0
  67. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/remedial_action.py +0 -0
  68. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/remedial_action_group.py +0 -0
  69. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Aggregation/zone.py +0 -0
  70. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Associations/__init__.py +0 -0
  71. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Associations/association.py +0 -0
  72. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Associations/emission_gas.py +0 -0
  73. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Associations/fuel.py +0 -0
  74. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Associations/technology.py +0 -0
  75. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/__init__.py +0 -0
  76. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/branch.py +0 -0
  77. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/dc_line.py +0 -0
  78. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/hvdc_line.py +0 -0
  79. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/sequence_line_type.py +0 -0
  80. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/series_reactance.py +0 -0
  81. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/switch.py +0 -0
  82. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/tap_changer.py +0 -0
  83. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/transformer.py +0 -0
  84. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/transformer3w.py +0 -0
  85. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/transformer_type.py +0 -0
  86. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/underground_line_type.py +0 -0
  87. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/upfc.py +0 -0
  88. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/vsc.py +0 -0
  89. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/winding.py +0 -0
  90. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Branches/wire.py +0 -0
  91. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Diagrams/__init__.py +0 -0
  92. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Diagrams/base_diagram.py +0 -0
  93. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Diagrams/map_diagram.py +0 -0
  94. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Diagrams/map_location.py +0 -0
  95. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Diagrams/palettes.py +0 -0
  96. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Diagrams/schematic_diagram.py +0 -0
  97. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Fluid/__init__.py +0 -0
  98. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Fluid/fluid_injection_template.py +0 -0
  99. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Fluid/fluid_node.py +0 -0
  100. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Fluid/fluid_p2x.py +0 -0
  101. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Fluid/fluid_path.py +0 -0
  102. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Fluid/fluid_pump.py +0 -0
  103. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Fluid/fluid_turbine.py +0 -0
  104. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/__init__.py +0 -0
  105. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/battery.py +0 -0
  106. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/controllable_shunt.py +0 -0
  107. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/current_injection.py +0 -0
  108. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/external_grid.py +0 -0
  109. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/generator.py +0 -0
  110. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/generator_q_curve.py +0 -0
  111. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/load.py +0 -0
  112. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/shunt.py +0 -0
  113. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Injections/static_generator.py +0 -0
  114. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Parents/__init__.py +0 -0
  115. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Parents/controllable_branch_parent.py +0 -0
  116. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Parents/generator_parent.py +0 -0
  117. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Parents/injection_parent.py +0 -0
  118. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Parents/load_parent.py +0 -0
  119. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Parents/physical_device.py +0 -0
  120. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Parents/shunt_parent.py +0 -0
  121. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Substation/__init__.py +0 -0
  122. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Substation/busbar.py +0 -0
  123. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Substation/connectivity_node.py +0 -0
  124. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Substation/substation.py +0 -0
  125. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/Substation/voltage_level.py +0 -0
  126. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/__init__.py +0 -0
  127. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/comparison.py +0 -0
  128. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/measurement.py +0 -0
  129. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/profile.py +0 -0
  130. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Devices/types.py +0 -0
  131. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/__init__.py +0 -0
  132. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/base/__init__.py +0 -0
  133. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/base/base_circuit.py +0 -0
  134. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/base/base_device.py +0 -0
  135. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/base/base_property.py +0 -0
  136. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/base/units.py +0 -0
  137. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/__init__.py +0 -0
  138. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/__init__.py +0 -0
  139. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/base.py +0 -0
  140. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_assets/__init__.py +0 -0
  141. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_assets/cgmes_2_4_15_assets.py +0 -0
  142. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_assets/cgmes_3_0_0_assets.py +0 -0
  143. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_circuit.py +0 -0
  144. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_create_instances.py +0 -0
  145. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_data_parser.py +0 -0
  146. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_data_validator.py +0 -0
  147. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_enums.py +0 -0
  148. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_export.py +0 -0
  149. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_property.py +0 -0
  150. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_to_gridcal.py +0 -0
  151. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_utils.py +0 -0
  152. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/__init__.py +0 -0
  153. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/__init__.py +0 -0
  154. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/ac_line_segment.py +0 -0
  155. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/acdc_converter.py +0 -0
  156. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/acdc_converterdc_terminal.py +0 -0
  157. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/acdc_terminal.py +0 -0
  158. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/active_power_limit.py +0 -0
  159. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/analog_control.py +0 -0
  160. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/apparent_power_limit.py +0 -0
  161. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/asynchronous_machine.py +0 -0
  162. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/base_voltage.py +0 -0
  163. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/basic_interval_schedule.py +0 -0
  164. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/bay.py +0 -0
  165. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/breaker.py +0 -0
  166. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/bus_name_marker.py +0 -0
  167. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/busbar_section.py +0 -0
  168. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/conducting_equipment.py +0 -0
  169. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/conductor.py +0 -0
  170. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/conform_load.py +0 -0
  171. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/conform_load_group.py +0 -0
  172. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/connectivity_node.py +0 -0
  173. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/connectivity_node_container.py +0 -0
  174. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/connector.py +0 -0
  175. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/control.py +0 -0
  176. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/control_area.py +0 -0
  177. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/control_area_generating_unit.py +0 -0
  178. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/coordinate_system.py +0 -0
  179. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/cs_converter.py +0 -0
  180. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/current_limit.py +0 -0
  181. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/curve.py +0 -0
  182. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/curve_data.py +0 -0
  183. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_base_terminal.py +0 -0
  184. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_breaker.py +0 -0
  185. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_busbar.py +0 -0
  186. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_chopper.py +0 -0
  187. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_conducting_equipment.py +0 -0
  188. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_converter_unit.py +0 -0
  189. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_disconnector.py +0 -0
  190. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_equipment_container.py +0 -0
  191. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_ground.py +0 -0
  192. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_line.py +0 -0
  193. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_line_segment.py +0 -0
  194. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_node.py +0 -0
  195. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_series_device.py +0 -0
  196. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_shunt.py +0 -0
  197. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_switch.py +0 -0
  198. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_terminal.py +0 -0
  199. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_topological_island.py +0 -0
  200. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/dc_topological_node.py +0 -0
  201. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/disconnector.py +0 -0
  202. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/earth_fault_compensator.py +0 -0
  203. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/energy_area.py +0 -0
  204. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/energy_consumer.py +0 -0
  205. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/energy_scheduling_type.py +0 -0
  206. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/energy_source.py +0 -0
  207. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/equipment.py +0 -0
  208. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/equipment_container.py +0 -0
  209. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/equivalent_branch.py +0 -0
  210. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/equivalent_equipment.py +0 -0
  211. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/equivalent_injection.py +0 -0
  212. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/equivalent_network.py +0 -0
  213. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/equivalent_shunt.py +0 -0
  214. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/external_network_injection.py +0 -0
  215. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/fossil_fuel.py +0 -0
  216. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/full_model.py +0 -0
  217. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/generating_unit.py +0 -0
  218. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/geographical_region.py +0 -0
  219. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/ground.py +0 -0
  220. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/ground_disconnector.py +0 -0
  221. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/grounding_impedance.py +0 -0
  222. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/hydro_generating_unit.py +0 -0
  223. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/hydro_power_plant.py +0 -0
  224. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/hydro_pump.py +0 -0
  225. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/identified_object.py +0 -0
  226. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/junction.py +0 -0
  227. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/limit.py +0 -0
  228. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/limit_set.py +0 -0
  229. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/line.py +0 -0
  230. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/linear_shunt_compensator.py +0 -0
  231. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/load_area.py +0 -0
  232. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/load_break_switch.py +0 -0
  233. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/load_group.py +0 -0
  234. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/load_response_characteristic.py +0 -0
  235. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/location.py +0 -0
  236. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/measurement.py +0 -0
  237. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/measurement_value.py +0 -0
  238. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/mutual_coupling.py +0 -0
  239. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/non_conform_load.py +0 -0
  240. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/non_conform_load_group.py +0 -0
  241. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/nonlinear_shunt_compensator.py +0 -0
  242. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/nonlinear_shunt_compensator_point.py +0 -0
  243. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/nuclear_generating_unit.py +0 -0
  244. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/operational_limit.py +0 -0
  245. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/operational_limit_set.py +0 -0
  246. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/operational_limit_type.py +0 -0
  247. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/per_lengthdc_line_parameter.py +0 -0
  248. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/petersen_coil.py +0 -0
  249. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/phase_tap_changer.py +0 -0
  250. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/phase_tap_changer_asymmetrical.py +0 -0
  251. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/phase_tap_changer_linear.py +0 -0
  252. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/phase_tap_changer_non_linear.py +0 -0
  253. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/phase_tap_changer_symmetrical.py +0 -0
  254. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/phase_tap_changer_table.py +0 -0
  255. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/phase_tap_changer_table_point.py +0 -0
  256. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/phase_tap_changer_tabular.py +0 -0
  257. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/position_point.py +0 -0
  258. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/power_system_resource.py +0 -0
  259. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/power_transformer.py +0 -0
  260. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/power_transformer_end.py +0 -0
  261. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/protected_switch.py +0 -0
  262. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/quality61850.py +0 -0
  263. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/ratio_tap_changer.py +0 -0
  264. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/ratio_tap_changer_table.py +0 -0
  265. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/ratio_tap_changer_table_point.py +0 -0
  266. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/reactive_capability_curve.py +0 -0
  267. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/regular_interval_schedule.py +0 -0
  268. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/regulating_cond_eq.py +0 -0
  269. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/regulating_control.py +0 -0
  270. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/reporting_group.py +0 -0
  271. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/rotating_machine.py +0 -0
  272. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/season_day_type_schedule.py +0 -0
  273. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/series_compensator.py +0 -0
  274. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/shunt_compensator.py +0 -0
  275. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/solar_generating_unit.py +0 -0
  276. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/static_var_compensator.py +0 -0
  277. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/sub_geographical_region.py +0 -0
  278. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/sub_load_area.py +0 -0
  279. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/substation.py +0 -0
  280. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/sv_injection.py +0 -0
  281. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/sv_power_flow.py +0 -0
  282. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/sv_shunt_compensator_sections.py +0 -0
  283. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/sv_status.py +0 -0
  284. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/sv_tap_step.py +0 -0
  285. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/sv_voltage.py +0 -0
  286. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/switch.py +0 -0
  287. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/synchronous_machine.py +0 -0
  288. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/tap_changer.py +0 -0
  289. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/tap_changer_control.py +0 -0
  290. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/tap_changer_table_point.py +0 -0
  291. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/terminal.py +0 -0
  292. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/thermal_generating_unit.py +0 -0
  293. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/tie_flow.py +0 -0
  294. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/topological_island.py +0 -0
  295. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/topological_node.py +0 -0
  296. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/transformer_end.py +0 -0
  297. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/voltage_level.py +0 -0
  298. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/voltage_limit.py +0 -0
  299. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/vs_capability_curve.py +0 -0
  300. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/vs_converter.py +0 -0
  301. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v2_4_15/devices/wind_generating_unit.py +0 -0
  302. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/__init__.py +0 -0
  303. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/__init__.py +0 -0
  304. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/ac_line_segment.py +0 -0
  305. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/acdc_converter.py +0 -0
  306. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/acdc_converterdc_terminal.py +0 -0
  307. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/acdc_terminal.py +0 -0
  308. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/active_power_limit.py +0 -0
  309. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/analog_control.py +0 -0
  310. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/apparent_power_limit.py +0 -0
  311. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/asynchronous_machine.py +0 -0
  312. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/auxiliary_equipment.py +0 -0
  313. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/base_voltage.py +0 -0
  314. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/basic_interval_schedule.py +0 -0
  315. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/battery_unit.py +0 -0
  316. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/bay.py +0 -0
  317. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/boundary_point.py +0 -0
  318. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/breaker.py +0 -0
  319. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/bus_name_marker.py +0 -0
  320. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/busbar_section.py +0 -0
  321. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/caes_plant.py +0 -0
  322. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/clamp.py +0 -0
  323. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/cogeneration_plant.py +0 -0
  324. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/combined_cycle_plant.py +0 -0
  325. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/conducting_equipment.py +0 -0
  326. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/conductor.py +0 -0
  327. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/conform_load.py +0 -0
  328. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/conform_load_group.py +0 -0
  329. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/connectivity_node.py +0 -0
  330. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/connectivity_node_container.py +0 -0
  331. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/connector.py +0 -0
  332. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/control.py +0 -0
  333. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/control_area.py +0 -0
  334. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/control_area_generating_unit.py +0 -0
  335. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/coordinate_system.py +0 -0
  336. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/cs_converter.py +0 -0
  337. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/current_limit.py +0 -0
  338. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/current_transformer.py +0 -0
  339. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/curve.py +0 -0
  340. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/curve_data.py +0 -0
  341. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/cut.py +0 -0
  342. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_base_terminal.py +0 -0
  343. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_breaker.py +0 -0
  344. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_busbar.py +0 -0
  345. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_chopper.py +0 -0
  346. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_conducting_equipment.py +0 -0
  347. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_converter_unit.py +0 -0
  348. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_disconnector.py +0 -0
  349. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_equipment_container.py +0 -0
  350. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_ground.py +0 -0
  351. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_line.py +0 -0
  352. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_line_segment.py +0 -0
  353. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_node.py +0 -0
  354. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_series_device.py +0 -0
  355. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_shunt.py +0 -0
  356. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_switch.py +0 -0
  357. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_terminal.py +0 -0
  358. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_topological_island.py +0 -0
  359. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/dc_topological_node.py +0 -0
  360. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/disconnecting_circuit_breaker.py +0 -0
  361. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/disconnector.py +0 -0
  362. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/earth_fault_compensator.py +0 -0
  363. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/energy_area.py +0 -0
  364. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/energy_connection.py +0 -0
  365. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/energy_consumer.py +0 -0
  366. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/energy_scheduling_type.py +0 -0
  367. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/energy_source.py +0 -0
  368. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/equipment.py +0 -0
  369. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/equipment_container.py +0 -0
  370. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/equivalent_branch.py +0 -0
  371. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/equivalent_equipment.py +0 -0
  372. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/equivalent_injection.py +0 -0
  373. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/equivalent_network.py +0 -0
  374. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/equivalent_shunt.py +0 -0
  375. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/external_network_injection.py +0 -0
  376. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/fault_indicator.py +0 -0
  377. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/fossil_fuel.py +0 -0
  378. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/fuse.py +0 -0
  379. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/generating_unit.py +0 -0
  380. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/geographical_region.py +0 -0
  381. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/ground.py +0 -0
  382. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/ground_disconnector.py +0 -0
  383. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/grounding_impedance.py +0 -0
  384. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/hydro_generating_unit.py +0 -0
  385. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/hydro_power_plant.py +0 -0
  386. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/hydro_pump.py +0 -0
  387. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/identified_object.py +0 -0
  388. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/io_point.py +0 -0
  389. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/jumper.py +0 -0
  390. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/junction.py +0 -0
  391. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/limit.py +0 -0
  392. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/limit_set.py +0 -0
  393. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/line.py +0 -0
  394. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/linear_shunt_compensator.py +0 -0
  395. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/load_area.py +0 -0
  396. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/load_break_switch.py +0 -0
  397. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/load_group.py +0 -0
  398. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/load_response_characteristic.py +0 -0
  399. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/location.py +0 -0
  400. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/measurement.py +0 -0
  401. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/measurement_value.py +0 -0
  402. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/mutual_coupling.py +0 -0
  403. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/non_conform_load.py +0 -0
  404. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/non_conform_load_group.py +0 -0
  405. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/nonlinear_shunt_compensator.py +0 -0
  406. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/nonlinear_shunt_compensator_point.py +0 -0
  407. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/nuclear_generating_unit.py +0 -0
  408. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/operational_limit.py +0 -0
  409. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/operational_limit_set.py +0 -0
  410. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/operational_limit_type.py +0 -0
  411. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/petersen_coil.py +0 -0
  412. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/phase_tap_changer.py +0 -0
  413. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/phase_tap_changer_asymmetrical.py +0 -0
  414. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/phase_tap_changer_linear.py +0 -0
  415. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/phase_tap_changer_non_linear.py +0 -0
  416. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/phase_tap_changer_symmetrical.py +0 -0
  417. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/phase_tap_changer_table.py +0 -0
  418. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/phase_tap_changer_table_point.py +0 -0
  419. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/phase_tap_changer_tabular.py +0 -0
  420. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/photo_voltaic_unit.py +0 -0
  421. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/position_point.py +0 -0
  422. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/post_line_sensor.py +0 -0
  423. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/potential_transformer.py +0 -0
  424. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/power_electronics_connection.py +0 -0
  425. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/power_electronics_unit.py +0 -0
  426. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/power_electronics_wind_unit.py +0 -0
  427. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/power_system_resource.py +0 -0
  428. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/power_transformer.py +0 -0
  429. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/power_transformer_end.py +0 -0
  430. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/protected_switch.py +0 -0
  431. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/ratio_tap_changer.py +0 -0
  432. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/ratio_tap_changer_table.py +0 -0
  433. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/ratio_tap_changer_table_point.py +0 -0
  434. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/reactive_capability_curve.py +0 -0
  435. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/regular_interval_schedule.py +0 -0
  436. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/regulating_cond_eq.py +0 -0
  437. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/regulating_control.py +0 -0
  438. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/reporting_group.py +0 -0
  439. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/rotating_machine.py +0 -0
  440. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/season_day_type_schedule.py +0 -0
  441. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sensor.py +0 -0
  442. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/series_compensator.py +0 -0
  443. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/service_location.py +0 -0
  444. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/shunt_compensator.py +0 -0
  445. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/solar_generating_unit.py +0 -0
  446. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/solar_power_plant.py +0 -0
  447. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/static_var_compensator.py +0 -0
  448. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sub_geographical_region.py +0 -0
  449. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sub_load_area.py +0 -0
  450. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/substation.py +0 -0
  451. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/surge_arrester.py +0 -0
  452. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sv_injection.py +0 -0
  453. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sv_power_flow.py +0 -0
  454. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sv_shunt_compensator_sections.py +0 -0
  455. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sv_status.py +0 -0
  456. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sv_switch.py +0 -0
  457. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sv_tap_step.py +0 -0
  458. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/sv_voltage.py +0 -0
  459. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/switch.py +0 -0
  460. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/synchronous_machine.py +0 -0
  461. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/tap_changer.py +0 -0
  462. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/tap_changer_control.py +0 -0
  463. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/tap_changer_table_point.py +0 -0
  464. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/terminal.py +0 -0
  465. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/thermal_generating_unit.py +0 -0
  466. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/tie_flow.py +0 -0
  467. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/topological_island.py +0 -0
  468. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/topological_node.py +0 -0
  469. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/transformer_end.py +0 -0
  470. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/voltage_level.py +0 -0
  471. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/voltage_limit.py +0 -0
  472. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/vs_capability_curve.py +0 -0
  473. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/vs_converter.py +0 -0
  474. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/wave_trap.py +0 -0
  475. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/wind_generating_unit.py +0 -0
  476. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/wind_power_plant.py +0 -0
  477. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_v3_0_0/devices/work_location.py +0 -0
  478. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/cgmes_writer.py +0 -0
  479. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/gridcal_to_cgmes.py +0 -0
  480. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/rdfs_infos.py +0 -0
  481. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cgmes/rdfs_serializations.py +0 -0
  482. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cim16/__init__.py +0 -0
  483. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cim16/cim_circuit.py +0 -0
  484. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cim16/cim_data_parser.py +0 -0
  485. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cim16/cim_devices.py +0 -0
  486. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cim16/cim_enums.py +0 -0
  487. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/cim16/cim_parser.py +0 -0
  488. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/db/__init__.py +0 -0
  489. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/db/base_db.py +0 -0
  490. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/db/cgmes_lookup_db.py +0 -0
  491. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/db/db_handler.py +0 -0
  492. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/db/file_system.py +0 -0
  493. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/cim/db/psse_lookup_db.py +0 -0
  494. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/dgs/__init__.py +0 -0
  495. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/dgs/dgs_parser.py +0 -0
  496. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/epc/__init__.py +0 -0
  497. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/epc/epc_parser.py +0 -0
  498. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/file_system.py +0 -0
  499. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/__init__.py +0 -0
  500. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/catalogue.py +0 -0
  501. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/contingency_parser.py +0 -0
  502. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/excel_interface.py +0 -0
  503. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/generic_io_functions.py +0 -0
  504. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/json_parser.py +0 -0
  505. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/remote.py +0 -0
  506. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/results_export.py +0 -0
  507. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/sqlite_interface.py +0 -0
  508. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/gridcal/zip_interface.py +0 -0
  509. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/__init__.py +0 -0
  510. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/area.py +0 -0
  511. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/branch.py +0 -0
  512. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/branch_dc.py +0 -0
  513. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/bus.py +0 -0
  514. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/bus_dc.py +0 -0
  515. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/converter_dc.py +0 -0
  516. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/generator.py +0 -0
  517. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/legacy/__init__.py +0 -0
  518. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/legacy/matpower_branch_definitions.py +0 -0
  519. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/legacy/matpower_bus_definitions.py +0 -0
  520. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/legacy/matpower_gen_definitions.py +0 -0
  521. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/legacy/matpower_parser.py +0 -0
  522. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/matpower_circuit.py +0 -0
  523. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/matpower_to_gridcal.py +0 -0
  524. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/matpower/matpower_utils.py +0 -0
  525. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/others/__init__.py +0 -0
  526. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/others/dpx_parser.py +0 -0
  527. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/others/ipa_parser.py +0 -0
  528. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/others/pandapower_parser.py +0 -0
  529. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/others/plx_parser.py +0 -0
  530. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/others/pypsa_parser.py +0 -0
  531. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/__init__.py +0 -0
  532. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/__init__.py +0 -0
  533. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/area.py +0 -0
  534. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/branch.py +0 -0
  535. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/facts.py +0 -0
  536. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/fixed_shunt.py +0 -0
  537. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/generator.py +0 -0
  538. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/gne_device.py +0 -0
  539. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/impedance_correction_table.py +0 -0
  540. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/induction_machine.py +0 -0
  541. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/inter_area.py +0 -0
  542. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/load.py +0 -0
  543. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/multi_section_line.py +0 -0
  544. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/node.py +0 -0
  545. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/owner.py +0 -0
  546. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/psse_circuit.py +0 -0
  547. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/psse_property.py +0 -0
  548. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/substation.py +0 -0
  549. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/switched_shunt.py +0 -0
  550. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/system_switching_device.py +0 -0
  551. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/transformer.py +0 -0
  552. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/two_terminal_dc_line.py +0 -0
  553. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/vsc_dc_line.py +0 -0
  554. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/devices/zone.py +0 -0
  555. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/gridcal_to_raw.py +0 -0
  556. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/raw_functions.py +0 -0
  557. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/raw_parser_writer.py +0 -0
  558. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/raw_to_gridcal.py +0 -0
  559. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/raw_writer_comment_map.py +0 -0
  560. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/raw/rawx_parser_writer.py +0 -0
  561. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/__init__.py +0 -0
  562. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/__init__.py +0 -0
  563. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/ucte_base.py +0 -0
  564. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/ucte_circuit.py +0 -0
  565. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/ucte_comment.py +0 -0
  566. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/ucte_exchange_power.py +0 -0
  567. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/ucte_line.py +0 -0
  568. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/ucte_node.py +0 -0
  569. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/ucte_transformer.py +0 -0
  570. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/ucte_transformer_regulation.py +0 -0
  571. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/devices/ucte_transformer_tap_table.py +0 -0
  572. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/IO/ucte/ucte_to_gridcal.py +0 -0
  573. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/LICENSE.txt +0 -0
  574. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ATC/__init__.py +0 -0
  575. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ATC/available_transfer_capacity_driver.py +0 -0
  576. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ATC/available_transfer_capacity_options.py +0 -0
  577. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ATC/available_transfer_capacity_ts_driver.py +0 -0
  578. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Clustering/__init__.py +0 -0
  579. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Clustering/clustering.py +0 -0
  580. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Clustering/clustering_driver.py +0 -0
  581. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Clustering/clustering_options.py +0 -0
  582. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Clustering/clustering_results.py +0 -0
  583. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/Methods/__init__.py +0 -0
  584. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/Methods/helm_contingencies.py +0 -0
  585. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/Methods/helm_contingency_analysis.py +0 -0
  586. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/Methods/srap.py +0 -0
  587. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/__init__.py +0 -0
  588. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/contingencies_report.py +0 -0
  589. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_options.py +0 -0
  590. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_results.py +0 -0
  591. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_analysis_ts_results.py +0 -0
  592. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContingencyAnalysis/contingency_plan.py +0 -0
  593. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContinuationPowerFlow/__init__.py +0 -0
  594. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow.py +0 -0
  595. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow_driver.py +0 -0
  596. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow_input.py +0 -0
  597. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow_options.py +0 -0
  598. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ContinuationPowerFlow/continuation_power_flow_results.py +0 -0
  599. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Derivatives/__init__.py +0 -0
  600. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Derivatives/ac_jacobian.py +0 -0
  601. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Derivatives/csc_derivatives.py +0 -0
  602. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Derivatives/csr_derivatives.py +0 -0
  603. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Derivatives/matpower_derivatives.py +0 -0
  604. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Dynamics/__init__.py +0 -0
  605. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Dynamics/dynamic_modules.py +0 -0
  606. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InputsAnalysis/__init__.py +0 -0
  607. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InputsAnalysis/inputs_analysis_driver.py +0 -0
  608. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InvestmentsEvaluation/Methods/NSGA_3.py +0 -0
  609. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InvestmentsEvaluation/Methods/__init__.py +0 -0
  610. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InvestmentsEvaluation/Methods/mixed_variable_NSGA_2.py +0 -0
  611. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InvestmentsEvaluation/Methods/random_eval.py +0 -0
  612. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InvestmentsEvaluation/Methods/stop_crits.py +0 -0
  613. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InvestmentsEvaluation/__init__.py +0 -0
  614. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InvestmentsEvaluation/investments_evaluation_driver.py +0 -0
  615. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InvestmentsEvaluation/investments_evaluation_options.py +0 -0
  616. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/InvestmentsEvaluation/investments_evaluation_results.py +0 -0
  617. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/LinearFactors/__init__.py +0 -0
  618. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_driver.py +0 -0
  619. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_options.py +0 -0
  620. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_results.py +0 -0
  621. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_ts_driver.py +0 -0
  622. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/LinearFactors/linear_analysis_ts_results.py +0 -0
  623. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NTC/__init__.py +0 -0
  624. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NTC/ntc_driver.py +0 -0
  625. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NTC/ntc_opf.py +0 -0
  626. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NTC/ntc_options.py +0 -0
  627. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NTC/ntc_results.py +0 -0
  628. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NTC/ntc_ts_driver.py +0 -0
  629. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NTC/ntc_ts_results.py +0 -0
  630. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NodalCapacity/__init__.py +0 -0
  631. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NodalCapacity/nodal_capacity_options.py +0 -0
  632. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NodalCapacity/nodal_capacity_ts_driver.py +0 -0
  633. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/NodalCapacity/nodal_capacity_ts_results.py +0 -0
  634. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/Formulations/__init__.py +0 -0
  635. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/Formulations/ac_opf_problem.py +0 -0
  636. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/NumericalMethods/__init__.py +0 -0
  637. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/NumericalMethods/ac_opf.py +0 -0
  638. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/NumericalMethods/ac_opf_derivatives.py +0 -0
  639. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/NumericalMethods/ac_opf_new.py +0 -0
  640. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/NumericalMethods/newton_raphson_ips_fx.py +0 -0
  641. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/__init__.py +0 -0
  642. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/linear_opf_ts.py +0 -0
  643. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/opf_driver.py +0 -0
  644. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/opf_options.py +0 -0
  645. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/opf_results.py +0 -0
  646. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/opf_ts_driver.py +0 -0
  647. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/opf_ts_results.py +0 -0
  648. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/OPF/simple_dispatch_ts.py +0 -0
  649. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/Formulations/__init__.py +0 -0
  650. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/Formulations/pf_advanced_formulation.py +0 -0
  651. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/Formulations/pf_basic_formulation.py +0 -0
  652. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/Formulations/pf_formulation_template.py +0 -0
  653. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/Formulations/pf_generalized_formulation.py +0 -0
  654. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/__init__.py +0 -0
  655. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/common_functions.py +0 -0
  656. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/discrete_controls.py +0 -0
  657. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/fast_decoupled.py +0 -0
  658. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/gauss_power_flow.py +0 -0
  659. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/helm_power_flow.py +0 -0
  660. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/iwamoto_newton_raphson.py +0 -0
  661. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/levenberg_marquadt_fx.py +0 -0
  662. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/linearized_power_flow.py +0 -0
  663. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/newton_raphson_fx.py +0 -0
  664. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/NumericalMethods/powell_fx.py +0 -0
  665. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/__init__.py +0 -0
  666. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/grid_analysis.py +0 -0
  667. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/power_flow_driver.py +0 -0
  668. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/power_flow_options.py +0 -0
  669. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/power_flow_results.py +0 -0
  670. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/power_flow_ts_driver.py +0 -0
  671. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/power_flow_ts_input.py +0 -0
  672. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/power_flow_ts_results.py +0 -0
  673. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/PowerFlow/power_flow_worker.py +0 -0
  674. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ShortCircuitStudies/__init__.py +0 -0
  675. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit.py +0 -0
  676. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_driver.py +0 -0
  677. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_options.py +0 -0
  678. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_results.py +0 -0
  679. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/ShortCircuitStudies/short_circuit_worker.py +0 -0
  680. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/SigmaAnalysis/__init__.py +0 -0
  681. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/SigmaAnalysis/sigma_analysis_driver.py +0 -0
  682. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/StateEstimation/__init__.py +0 -0
  683. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/StateEstimation/state_estimation.py +0 -0
  684. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/StateEstimation/state_estimation_inputs.py +0 -0
  685. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/StateEstimation/state_stimation_driver.py +0 -0
  686. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Stochastic/__init__.py +0 -0
  687. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Stochastic/blackout_driver.py +0 -0
  688. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Stochastic/latin_hypercube_sampling.py +0 -0
  689. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Stochastic/reliability_driver.py +0 -0
  690. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Stochastic/reliability_iterable.py +0 -0
  691. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Stochastic/stochastic_power_flow_driver.py +0 -0
  692. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Stochastic/stochastic_power_flow_input.py +0 -0
  693. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Stochastic/stochastic_power_flow_results.py +0 -0
  694. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Topology/__init__.py +0 -0
  695. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Topology/node_groups_driver.py +0 -0
  696. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Topology/topology_processor_driver.py +0 -0
  697. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/Topology/topology_reduction_driver.py +0 -0
  698. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/__init__.py +0 -0
  699. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/driver_handler.py +0 -0
  700. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/driver_template.py +0 -0
  701. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/options_template.py +0 -0
  702. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/results_table.py +0 -0
  703. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/results_template.py +0 -0
  704. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Simulations/types.py +0 -0
  705. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Topology/__init__.py +0 -0
  706. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Topology/admittance_matrices.py +0 -0
  707. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Topology/detect_substations.py +0 -0
  708. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Topology/simulation_indices.py +0 -0
  709. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Topology/topology_processor.py +0 -0
  710. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Filtering/__init__.py +0 -0
  711. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Filtering/filtering.py +0 -0
  712. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Filtering/objects_filtering.py +0 -0
  713. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Filtering/results_table_filtering.py +0 -0
  714. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Filtering/timeseries_filtering.py +0 -0
  715. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/MIP/SimpleMip/__init__.py +0 -0
  716. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/MIP/SimpleMip/highs.py +0 -0
  717. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/MIP/SimpleMip/lpmodel.py +0 -0
  718. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/MIP/SimpleMip/lpobjects.py +0 -0
  719. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/MIP/__init__.py +0 -0
  720. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/MIP/pulp_interface.py +0 -0
  721. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/MIP/selected_interface.py +0 -0
  722. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/MVRSM_mo_scaled.py +0 -0
  723. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/MVRSM_original.py +0 -0
  724. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/__init__.py +0 -0
  725. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/autodiff.py +0 -0
  726. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/common.py +0 -0
  727. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/ips.py +0 -0
  728. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/iwamoto.py +0 -0
  729. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/levenberg_marquadt.py +0 -0
  730. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/newton_raphson.py +0 -0
  731. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/newton_raphson_ode.py +0 -0
  732. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/non_dominated_sorting.py +0 -0
  733. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/nsga3.py +0 -0
  734. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/numerical_stability.py +0 -0
  735. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/powell.py +0 -0
  736. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/sparse_solve.py +0 -0
  737. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/NumericalMethods/weldorf_online_stddev.py +0 -0
  738. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Sparse/__init__.py +0 -0
  739. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Sparse/csc.py +0 -0
  740. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Sparse/csc2.py +0 -0
  741. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Sparse/csc_numba.py +0 -0
  742. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Sparse/sparse_array.py +0 -0
  743. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/Sparse/utils.py +0 -0
  744. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/SyntheticNetworks/__init__.py +0 -0
  745. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/SyntheticNetworks/rpgm_algo.py +0 -0
  746. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/__init__.py +0 -0
  747. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/__init__.py +0 -0
  748. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/__init__.py +0 -0
  749. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/copt_api.py +0 -0
  750. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/cplex_cmd.py +0 -0
  751. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/cplex_py.py +0 -0
  752. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/gurobi_cmd.py +0 -0
  753. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/gurobi_py.py +0 -0
  754. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/highs_cmd.py +0 -0
  755. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/highs_py.py +0 -0
  756. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/lp_solver.py +0 -0
  757. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/lp_solver_cmd.py +0 -0
  758. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/scip_api.py +0 -0
  759. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/apis/xpress_api.py +0 -0
  760. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/constants.py +0 -0
  761. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/model/__init__.py +0 -0
  762. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/model/lp_objects.py +0 -0
  763. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/model/lp_problem.py +0 -0
  764. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/mps_lp.py +0 -0
  765. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/paths.py +0 -0
  766. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/pulp.py +0 -0
  767. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/sparse.py +0 -0
  768. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/ThirdParty/pulp/utilities.py +0 -0
  769. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/__init__.py +0 -0
  770. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/progress_bar.py +0 -0
  771. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/scores.py +0 -0
  772. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/Utils/zip_file_mgmt.py +0 -0
  773. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/__init__.py +0 -0
  774. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/api.py +0 -0
  775. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/basic_structures.py +0 -0
  776. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/GridCalEngine/data_logger.py +0 -0
  777. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/setup.cfg +0 -0
  778. {gridcalengine-5.3.18 → gridcalengine-5.3.19}/setup.py +0 -0
@@ -0,0 +1,1581 @@
1
+ # This Source Code Form is subject to the terms of the Mozilla Public
2
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ # file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
+ # SPDX-License-Identifier: MPL-2.0
5
+ from __future__ import annotations
6
+ import os.path
7
+ import warnings
8
+ import numpy as np
9
+ from typing import List, Dict, Union, TYPE_CHECKING
10
+
11
+ import GridCalEngine
12
+ from GridCalEngine.basic_structures import IntVec, Vec
13
+ from GridCalEngine.Devices.multi_circuit import MultiCircuit
14
+ from GridCalEngine.enumerations import (HvdcControlType, SolverType, TimeGrouping,
15
+ ZonalGrouping, MIPSolvers, ContingencyMethod,
16
+ BuildStatus)
17
+ import GridCalEngine.Devices as dev
18
+ from GridCalEngine.Simulations.PowerFlow.power_flow_options import PowerFlowOptions
19
+ from GridCalEngine.Simulations.PowerFlow.power_flow_results import PowerFlowResults
20
+
21
+ from GridCalEngine.DataStructures.numerical_circuit import NumericalCircuit
22
+
23
+ from GridCalEngine.IO.file_system import get_create_gridcal_folder
24
+ from GridCalEngine.basic_structures import ConvergenceReport
25
+
26
+ if TYPE_CHECKING: # Only imports the below statements during type checking
27
+ from GridCalEngine.Simulations.OPF.opf_results import OptimalPowerFlowResults
28
+ from GridCalEngine.Simulations.OPF.opf_options import OptimalPowerFlowOptions
29
+ from GridCalEngine.Simulations.LinearFactors.linear_analysis_options import LinearAnalysisOptions
30
+ from GridCalEngine.Simulations.ContingencyAnalysis.contingency_analysis_options import ContingencyAnalysisOptions
31
+ from GridCalEngine.Simulations.ContingencyAnalysis.contingency_analysis_results import ContingencyAnalysisResults
32
+
33
+ GSLV_RECOMMENDED_VERSION = "0.0.4"
34
+ GSLV_VERSION = ''
35
+ GSLV_AVAILABLE = False
36
+ try:
37
+ import pygslv as pg
38
+
39
+ pg.activate(os.path.join(get_create_gridcal_folder(), "license.gslv"), verbose=True)
40
+
41
+ # activate
42
+ if not pg.isLicensed():
43
+ # license not found
44
+ GSLV_AVAILABLE = False
45
+ else:
46
+ # already activated
47
+ GSLV_AVAILABLE = True
48
+ GSLV_VERSION = pg.get_version()
49
+
50
+ if GSLV_AVAILABLE:
51
+ if GSLV_VERSION < GSLV_RECOMMENDED_VERSION:
52
+ warnings.warn(f"Recommended version for GSLV is {GSLV_RECOMMENDED_VERSION} "
53
+ f"instead of {GSLV_VERSION}")
54
+
55
+ except ImportError as e:
56
+ pg = None
57
+ GSLV_AVAILABLE = False
58
+ GSLV_VERSION = ''
59
+
60
+ # numpy integer type for GSLV's uword
61
+ BINT = np.ulonglong
62
+
63
+
64
+ def get_gslv_mip_solvers_list() -> List[str]:
65
+ """
66
+ Get list of available MIP solvers
67
+ :return:
68
+ """
69
+ if GSLV_AVAILABLE:
70
+ return list()
71
+ else:
72
+ return list()
73
+
74
+
75
+ def get_final_profile(time_series: bool,
76
+ time_indices: Union[IntVec, None],
77
+ profile: Union[IntVec, Vec, None],
78
+ ntime=1,
79
+ default_val=0,
80
+ dtype=float) -> Union[Vec, IntVec]:
81
+ """
82
+ Generates a default time series
83
+ :param time_series: use time series?
84
+ :param time_indices: time series indices if any (optional)
85
+ :param profile: Profile array (must be provided if time_series = True
86
+ :param ntime: (if time_series = False) number of time steps
87
+ :param default_val: Default value
88
+ :param dtype: data type (float, int, etc...)
89
+ :return: Profile array
90
+ """
91
+
92
+ if time_series:
93
+ return profile if time_indices is None else profile[time_indices]
94
+ else:
95
+ return np.full(ntime, default_val, dtype=dtype)
96
+
97
+
98
+ def convert_area(area: dev.Area) -> "pg.Area":
99
+ """
100
+
101
+ :param area:
102
+ :return:
103
+ """
104
+ return pg.Area(idtag=area.idtag, code=str(area.code), name=area.name)
105
+
106
+
107
+ def add_areas(circuit: MultiCircuit,
108
+ gslv_grid: "pg.MultiCircuit") -> Dict[dev.Area, "pg.Area"]:
109
+ """
110
+ Add GSLV Areas
111
+ :param circuit: GridCal circuit
112
+ :param gslv_grid: GSLV Circuit
113
+ :return: Dictionary [GridCal area] -> GSLV Area
114
+ """
115
+ d = dict()
116
+
117
+ for i, area in enumerate(circuit.areas):
118
+ elm = convert_area(area)
119
+ gslv_grid.add_area(elm)
120
+ d[area] = elm
121
+
122
+ return d
123
+
124
+
125
+ def convert_zone(zone: dev.Zone) -> "pg.Zone":
126
+ return pg.Zone(idtag=zone.idtag, code=str(zone.code), name=zone.name)
127
+
128
+
129
+ def add_zones(circuit: MultiCircuit,
130
+ gslv_grid: "pg.MultiCircuit") -> Dict[dev.Zone, "pg.Zone"]:
131
+ """
132
+ Add GSLV Zones
133
+ :param circuit: GridCal circuit
134
+ :param gslv_grid: GSLV Circuit
135
+ :return: Dictionary [GridCal Zone] -> GSLV Zone
136
+ """
137
+ d = dict()
138
+
139
+ for i, zone in enumerate(circuit.zones):
140
+ elm = convert_zone(zone)
141
+ gslv_grid.add_zone(elm)
142
+ d[zone] = elm
143
+
144
+ return d
145
+
146
+
147
+ def convert_contingency_groups(elm: dev.ContingencyGroup) -> "pg.ContingencyGroup":
148
+ return pg.ContingencyGroup(idtag=elm.idtag,
149
+ code=str(elm.code),
150
+ name=elm.name,
151
+ category=elm.category)
152
+
153
+
154
+ def add_contingency_groups(circuit: MultiCircuit,
155
+ gslv_grid: "pg.MultiCircuit") -> Dict[dev.ContingencyGroup, "pg.ContingencyGroup"]:
156
+ """
157
+ Add GSLV ContingenciesGroup
158
+ :param circuit: GridCal circuit
159
+ :param gslv_grid: GSLV Circuit
160
+ :return: Dictionary [GridCal ContingenciesGroup] -> GSLV ContingenciesGroup
161
+ """
162
+ d = dict()
163
+
164
+ for i, elm in enumerate(circuit.get_contingency_groups()):
165
+ dev = convert_contingency_groups(elm)
166
+ gslv_grid.add_contingency_group(dev)
167
+ d[elm] = dev
168
+
169
+ return d
170
+
171
+
172
+ def convert_contingencies(elm: dev.Contingency,
173
+ n_time: int,
174
+ groups_dict: Dict[dev.ContingencyGroup, "pg.ContingencyGroup"]) -> "pg.Contingency":
175
+ return pg.Contingency(idtag=elm.idtag,
176
+ code=str(elm.code),
177
+ name=elm.name,
178
+ nt=n_time,
179
+ device_idtag=elm.device_idtag,
180
+ prop=elm.prop,
181
+ value=elm.value,
182
+ group=groups_dict[elm.group])
183
+
184
+
185
+ def add_contingencies(circuit: MultiCircuit,
186
+ gslv_grid: "pg.MultiCircuit",
187
+ n_time: int,
188
+ groups_dict: Dict[dev.ContingencyGroup, "pg.ContingencyGroup"], ):
189
+ """
190
+ Add GSLV ContingenciesGroup
191
+ :param circuit: GridCal circuit
192
+ :param gslv_grid: GSLV Circuit
193
+ :param n_time: number of time steps
194
+ :param groups_dict: Contingency groups dictionary
195
+ :return: Dictionary [GridCal ContingenciesGroup] -> GSLV ContingenciesGroup
196
+ """
197
+ d = dict()
198
+
199
+ for i, elm in enumerate(circuit.contingencies):
200
+ dev = convert_contingencies(elm=elm, n_time=n_time, groups_dict=groups_dict[elm.group])
201
+
202
+ gslv_grid.add_contingency(dev)
203
+
204
+ d[elm] = dev
205
+
206
+ return d
207
+
208
+
209
+ def convert_investment_group(elm: dev.InvestmentsGroup) -> "pg.InvestmentGroup":
210
+ return pg.InvestmentGroup(idtag=elm.idtag,
211
+ code=str(elm.code),
212
+ name=elm.name,
213
+ category=elm.category)
214
+
215
+
216
+ def add_investment_groups(circuit: MultiCircuit, gslv_grid: "pg.MultiCircuit"):
217
+ """
218
+
219
+ :param circuit:
220
+ :param gslv_grid:
221
+ :return:
222
+ """
223
+ d = dict()
224
+
225
+ for i, elm in enumerate(circuit.investments_groups):
226
+ dev = convert_investment_group(elm)
227
+ gslv_grid.add_investment_group(dev)
228
+ d[elm] = dev
229
+
230
+ return d
231
+
232
+
233
+ def convert_investment(elm: dev.Investment,
234
+ groups_dict: Dict[dev.InvestmentsGroup, "pg.InvestmentGroup"]) -> "pg.Investment":
235
+ return pg.Investment(idtag=elm.idtag,
236
+ code=str(elm.code),
237
+ name=elm.name,
238
+ device_idtag=elm.device_idtag,
239
+ group=groups_dict[elm.group],
240
+ CAPEX=elm.CAPEX,
241
+ OPEX=elm.OPEX)
242
+
243
+
244
+ def add_investments(circuit: MultiCircuit,
245
+ gslv_grid: "pg.MultiCircuit",
246
+ groups_dict: Dict[dev.InvestmentsGroup, "pg.InvestmentGroup"]):
247
+ """
248
+
249
+ :param circuit:
250
+ :param gslv_grid:
251
+ :param groups_dict:
252
+ :return:
253
+ """
254
+ d = dict()
255
+
256
+ for i, elm in enumerate(circuit.investments):
257
+ dev = convert_investment(elm, groups_dict=groups_dict[elm.group])
258
+ gslv_grid.add_investment(dev)
259
+ d[elm] = dev
260
+
261
+ return d
262
+
263
+
264
+ def convert_bus(bus: dev.Bus, n_time: int,
265
+ area_dict: Dict[dev.Area, "pg.Area"],
266
+ time_indices: IntVec,
267
+ use_time_series: bool) -> "pg.Bus":
268
+ elm = pg.Bus(idtag=bus.idtag,
269
+ code=str(bus.code),
270
+ name=bus.name,
271
+ nt=n_time,
272
+ is_slack=bus.is_slack,
273
+ is_dc=bus.is_dc,
274
+ Vnom=bus.Vnom,
275
+ vmin=bus.Vmin,
276
+ vmax=bus.Vmax,
277
+ angle_min=bus.angle_min,
278
+ angle_max=bus.angle_max,
279
+ area=area_dict.get(bus.area, None))
280
+
281
+ if use_time_series and n_time > 1:
282
+ elm.active = (bus.active_prof.astype(BINT)
283
+ if time_indices is None
284
+ else bus.active_prof.astype(BINT)[time_indices])
285
+ else:
286
+ elm.set_active_val(int(bus.active))
287
+
288
+ return elm
289
+
290
+
291
+ def add_buses(circuit: MultiCircuit,
292
+ gslv_grid: "pg.MultiCircuit",
293
+ use_time_series: bool,
294
+ n_time: int = 1,
295
+ time_indices: Union[IntVec, None] = None,
296
+ area_dict: Dict[dev.Area, "pg.Area"] = None) -> Dict[str, "pg.Bus"]:
297
+ """
298
+ Convert the buses to GSLV buses
299
+ :param circuit: GridCal circuit
300
+ :param gslv_grid: GSLV circuit
301
+ :param use_time_series: compile the time series from GridCal? otherwise, just the snapshot
302
+ :param n_time: number of time steps
303
+ :param time_indices: Array of time indices
304
+ :param area_dict: Area object translation dictionary
305
+ :return: bus dictionary buses[uuid] -> Bus
306
+ """
307
+
308
+ if time_indices is not None:
309
+ assert (len(time_indices) == n_time)
310
+
311
+ if area_dict is None:
312
+ area_dict = {elm: k for k, elm in enumerate(circuit.areas)}
313
+
314
+ bus_dict: Dict[str, "pg.Bus"] = dict()
315
+
316
+ for i, bus in enumerate(circuit.buses):
317
+ elm = convert_bus(bus=bus, n_time=n_time,
318
+ area_dict=area_dict,
319
+ use_time_series=use_time_series,
320
+ time_indices=time_indices)
321
+
322
+ gslv_grid.add_bus(elm)
323
+ bus_dict[bus.idtag] = elm
324
+
325
+ return bus_dict
326
+
327
+
328
+ def convert_load(k: int, elm: dev.Load, bus_dict: Dict[str, "pg.Bus"], n_time: int,
329
+ use_time_series: bool, time_indices: IntVec | None = None,
330
+ opf_results: OptimalPowerFlowResults | None = None) -> "pg.Load":
331
+ """
332
+
333
+ :param k:
334
+ :param elm:
335
+ :param bus_dict:
336
+ :param n_time:
337
+ :param use_time_series:
338
+ :param time_indices:
339
+ :param opf_results:
340
+ :return:
341
+ """
342
+
343
+ """
344
+ TypeError: __init__(): incompatible constructor arguments. The following argument types are supported:
345
+ pygslv.Load(
346
+ nt: int,
347
+ name: str = 'Load',
348
+ idtag: str = '',
349
+ code: str = '',
350
+ G: float = 0.0,
351
+ B: float = 0.0,
352
+ Ir: float = 0.0,
353
+ Ii: float = 0.0,
354
+ P: float = 0.0,
355
+ Q: float = 0.0,
356
+ Cost: float = 1200.0,
357
+ active: bool = True,
358
+ mttf: float = 0.0,
359
+ mttr: float = 0.0,
360
+ capex: float = 0.0,
361
+ opex: float = 0.0,
362
+ build_status: pygslv.BuildStatus = <BuildStatus.Commissioned: 0>)
363
+
364
+ Invoked with: kwargs: idtag='1d19d20c90924be7928e0fbb61aa699f', code='2_1', name='2_1', calc_node=BUS 2, nt=1, P=21.7, Q=12.7, build_status=Commissioned
365
+
366
+ """
367
+ build_status_dict = {
368
+ BuildStatus.Planned: pg.BuildStatus.Planned,
369
+ BuildStatus.Commissioned: pg.BuildStatus.Commissioned,
370
+ BuildStatus.Candidate: pg.BuildStatus.Candidate,
371
+ BuildStatus.Decommissioned: pg.BuildStatus.Decommissioned,
372
+ BuildStatus.PlannedDecommission: pg.BuildStatus.PlannedDecommission,
373
+ }
374
+
375
+ load = pg.Load(
376
+ nt=n_time,
377
+ name=elm.name,
378
+ idtag=elm.idtag,
379
+ code=str(elm.code),
380
+ G=elm.G,
381
+ B=elm.B,
382
+ Ir=elm.Ir,
383
+ Ii=elm.Ii,
384
+ P=elm.P if opf_results is None else elm.P - opf_results.load_shedding[k],
385
+ Q=elm.Q,
386
+ Cost=elm.Cost,
387
+ active=elm.active,
388
+ mttf=elm.mttf,
389
+ mttr=elm.mttr,
390
+ capex=elm.capex,
391
+ opex=elm.opex,
392
+ build_status=build_status_dict[elm.build_status],
393
+ )
394
+
395
+ load.bus = bus_dict[elm.bus.idtag]
396
+
397
+ if use_time_series:
398
+ load.active = (elm.active_prof.astype(BINT)
399
+ if time_indices is None
400
+ else elm.active_prof.astype(BINT)[time_indices])
401
+
402
+ if opf_results is None:
403
+ P = elm.P_prof.toarray()
404
+ else:
405
+ P = elm.P_prof.toarray() - opf_results.load_shedding[:, k]
406
+
407
+ load.P = P if time_indices is None else P[time_indices]
408
+ load.Q = elm.Q_prof.toarray() if time_indices is None else elm.Q_prof.toarray()[time_indices]
409
+ load.cost_1 = elm.Cost_prof.toarray() if time_indices is None else elm.Cost_prof.toarray()[time_indices]
410
+ else:
411
+ load.set_active_val(int(elm.active))
412
+ load.setAllCost1(elm.Cost)
413
+
414
+ return load
415
+
416
+
417
+ def add_loads(circuit: MultiCircuit,
418
+ gslv_grid: "pg.MultiCircuit",
419
+ bus_dict: Dict[str, "pg.Bus"],
420
+ use_time_series: bool,
421
+ n_time=1,
422
+ time_indices: IntVec | None = None,
423
+ opf_results: OptimalPowerFlowResults | None = None,
424
+ build_status_dict: Dict[BuildStatus, "pg.BuildStatus"] | None = None,):
425
+ """
426
+
427
+ :param circuit: GridCal circuit
428
+ :param gslv_grid: GSLV circuit
429
+ :param bus_dict: dictionary of bus id to GSLV bus object
430
+ :param use_time_series: compile the time series from GridCal? otherwise just the snapshot
431
+ :param n_time: number of time steps
432
+ :param time_indices:
433
+ :param opf_results:
434
+ :param build_status_dict:
435
+ :return:
436
+ """
437
+ devices = circuit.get_loads()
438
+ for k, elm in enumerate(devices):
439
+ load = convert_load(k=k, elm=elm, bus_dict=bus_dict,
440
+ n_time=n_time, use_time_series=use_time_series,
441
+ time_indices=time_indices, opf_results=opf_results)
442
+ gslv_grid.add_load(load)
443
+
444
+
445
+ def convert_static_generator(elm: dev.StaticGenerator, bus_dict: Dict[str, "pg.Bus"], n_time: int,
446
+ use_time_series: bool, time_indices: IntVec | None = None, ) -> "pg.StaticGenerator":
447
+ pe_inj = pg.StaticGenerator(
448
+ idtag=elm.idtag,
449
+ code=str(elm.code),
450
+ name=elm.name,
451
+ calc_node=bus_dict[elm.bus.idtag],
452
+ nt=n_time,
453
+ P=elm.P,
454
+ Q=elm.Q,
455
+ build_status=elm.build_status,
456
+ )
457
+
458
+ if use_time_series:
459
+ pe_inj.active = elm.active_prof.astype(BINT) if time_indices is None else elm.active_prof.astype(BINT)[
460
+ time_indices]
461
+ pe_inj.P = elm.P_prof.toarray() if time_indices is None else elm.P_prof.toarray()[time_indices]
462
+ pe_inj.Q = elm.Q_prof.toarray() if time_indices is None else elm.Q_prof.toarray()[time_indices]
463
+ pe_inj.cost_1 = elm.Cost_prof.toarray() if time_indices is None else elm.Cost_prof.toarray()[time_indices]
464
+ else:
465
+ pe_inj.active = np.ones(n_time, dtype=BINT) * int(elm.active)
466
+ pe_inj.setAllCost1(elm.Cost)
467
+
468
+ return pe_inj
469
+
470
+
471
+ def add_static_generators(circuit: MultiCircuit, gslv_grid: "pg.MultiCircuit",
472
+ bus_dict: Dict[str, "pg.Bus"],
473
+ time_series: bool,
474
+ n_time=1,
475
+ time_indices: Union[IntVec, None] = None):
476
+ """
477
+
478
+ :param circuit: GridCal circuit
479
+ :param gslv_grid: GSLV circuit
480
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
481
+ :param bus_dict: dictionary of bus id to GSLV bus object
482
+ :param n_time: number of time steps
483
+ :param time_indices: Array of time indices
484
+ """
485
+ devices = circuit.get_static_generators()
486
+ for k, elm in enumerate(devices):
487
+ pe_inj = convert_static_generator(elm=elm, bus_dict=bus_dict, n_time=n_time,
488
+ use_time_series=time_series, time_indices=time_indices)
489
+ gslv_grid.add_static_generator(pe_inj)
490
+
491
+
492
+ def convert_shunt(elm: dev.Shunt, bus_dict: Dict[str, "pg.Bus"], n_time: int,
493
+ use_time_series: bool, time_indices: IntVec | None = None, ) -> "pg.Shunt":
494
+ sh = pg.Shunt(
495
+ idtag=elm.idtag,
496
+ code=str(elm.code),
497
+ name=elm.name,
498
+ calc_node=bus_dict[elm.bus.idtag],
499
+ nt=n_time,
500
+ G=elm.G,
501
+ B=elm.B,
502
+ build_status=elm.build_status,
503
+ )
504
+
505
+ if use_time_series:
506
+ sh.active = (elm.active_prof.astype(BINT)
507
+ if time_indices is None
508
+ else elm.active_prof.astype(BINT)[time_indices])
509
+ sh.G = elm.G_prof.toarray() if time_indices is None else elm.G_prof.toarray()[time_indices]
510
+ sh.B = elm.B_prof.toarray() if time_indices is None else elm.B_prof.toarray()[time_indices]
511
+ else:
512
+ sh.active = np.ones(n_time, dtype=BINT) * int(elm.active)
513
+
514
+ return sh
515
+
516
+
517
+ def add_shunts(circuit: MultiCircuit,
518
+ gslv_grid: "pg.MultiCircuit",
519
+ bus_dict: Dict[str, "pg.Bus"],
520
+ time_series: bool,
521
+ n_time=1,
522
+ time_indices: Union[IntVec, None] = None):
523
+ """
524
+
525
+ :param circuit: GridCal circuit
526
+ :param gslv_grid: GSLV circuit
527
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
528
+ :param bus_dict: dictionary of bus id to GSLV bus object
529
+ :param n_time: number of time steps
530
+ :param time_indices: Array of time indices
531
+ """
532
+ devices = circuit.get_shunts()
533
+ for k, elm in enumerate(devices):
534
+ sh = convert_shunt(elm=elm, bus_dict=bus_dict, n_time=n_time,
535
+ use_time_series=time_series, time_indices=time_indices)
536
+ gslv_grid.add_shunt(sh)
537
+
538
+
539
+ def convert_generator(k: int, elm: dev.Generator, bus_dict: Dict[str, "pg.Bus"], n_time: int,
540
+ use_time_series: bool, time_indices: IntVec | None = None,
541
+ opf_results: OptimalPowerFlowResults | None = None) -> "pg.Generator":
542
+ """
543
+
544
+ :param k:
545
+ :param elm:
546
+ :param bus_dict:
547
+ :param n_time:
548
+ :param use_time_series:
549
+ :param time_indices:
550
+ :param opf_results:
551
+ :return:
552
+ """
553
+ gen = pg.Generator(idtag=elm.idtag,
554
+ name=elm.name,
555
+ calc_node=bus_dict[elm.bus.idtag],
556
+ nt=n_time,
557
+ P=elm.P,
558
+ Vset=elm.Vset,
559
+ Pmin=elm.Pmin,
560
+ Pmax=elm.Pmax,
561
+ Qmin=elm.Qmin,
562
+ Qmax=elm.Qmax,
563
+ Snom=elm.Snom,
564
+ controllable_default=BINT(elm.is_controlled),
565
+ dispatchable_default=BINT(elm.enabled_dispatch),
566
+ is_controlled=elm.is_controlled,
567
+ q_points=elm.q_curve.get_data())
568
+
569
+ if use_time_series:
570
+
571
+ gen.active = elm.active_prof.astype(BINT) if time_indices is None else elm.active_prof.astype(BINT)[
572
+ time_indices]
573
+
574
+ if opf_results is None:
575
+ P = elm.P_prof.toarray()
576
+ else:
577
+ P = opf_results.generator_power[:, k] - opf_results.generator_shedding[:, k]
578
+
579
+ gen.P = P if time_indices is None else P[time_indices]
580
+
581
+ gen.Vset = elm.Vset_prof.toarray() if time_indices is None else elm.Vset_prof.toarray()[time_indices]
582
+ gen.cost_0 = elm.Cost0_prof.toarray() if time_indices is None else elm.Cost0_prof.toarray()[time_indices]
583
+ gen.cost_1 = elm.Cost_prof.toarray() if time_indices is None else elm.Cost_prof.toarray()[time_indices]
584
+ gen.cost_2 = elm.Cost2_prof.toarray() if time_indices is None else elm.Cost2_prof.toarray()[time_indices]
585
+ else:
586
+ gen.active = np.ones(n_time, dtype=BINT) * int(elm.active)
587
+
588
+ if opf_results is None:
589
+ gen.P = np.full(n_time, elm.P, dtype=float)
590
+ else:
591
+ gen.P = np.full(n_time, opf_results.generator_power[k] - opf_results.generator_shedding[k], dtype=float)
592
+
593
+ gen.Vset = np.ones(n_time, dtype=float) * elm.Vset
594
+ gen.setAllCost0(elm.Cost0)
595
+ gen.setAllCost1(elm.Cost)
596
+ gen.setAllCost2(elm.Cost2)
597
+
598
+ return gen
599
+
600
+
601
+ def add_generators(circuit: MultiCircuit,
602
+ gslv_grid: "pg.MultiCircuit",
603
+ bus_dict: Dict[str, "pg.Bus"],
604
+ time_series: bool,
605
+ n_time=1,
606
+ time_indices: Union[IntVec, None] = None,
607
+ opf_results: Union[None, OptimalPowerFlowResults] = None):
608
+ """
609
+
610
+ :param circuit: GridCal circuit
611
+ :param gslv_grid: GSLV circuit
612
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
613
+ :param bus_dict: dictionary of bus id to GSLV bus object
614
+ :param n_time: number of time steps
615
+ :param time_indices: Array of time indices
616
+ :param opf_results: OptimalPowerFlowResults (optional)
617
+ """
618
+ devices = circuit.get_generators()
619
+
620
+ for k, elm in enumerate(devices):
621
+ gen = convert_generator(k=k, elm=elm, bus_dict=bus_dict,
622
+ n_time=n_time, use_time_series=time_series,
623
+ time_indices=time_indices, opf_results=opf_results)
624
+
625
+ gslv_grid.add_generator(gen)
626
+
627
+
628
+ def convert_battery(k: int, elm: dev.Battery, bus_dict: Dict[str, "pg.Bus"], n_time: int,
629
+ use_time_series: bool, time_indices: IntVec | None = None,
630
+ opf_results: OptimalPowerFlowResults | None = None) -> "pg.Battery":
631
+ """
632
+
633
+ :param k:
634
+ :param elm:
635
+ :param bus_dict:
636
+ :param n_time:
637
+ :param use_time_series:
638
+ :param time_indices:
639
+ :param opf_results:
640
+ :return:
641
+ """
642
+ gen = pg.Battery(idtag=elm.idtag,
643
+ name=elm.name,
644
+ calc_node=bus_dict[elm.bus.idtag],
645
+ nt=n_time,
646
+ nominal_energy=elm.Enom,
647
+ P=elm.P,
648
+ Vset=elm.Vset,
649
+ soc_max=elm.max_soc,
650
+ soc_min=elm.min_soc,
651
+ Qmin=elm.Qmin,
652
+ Qmax=elm.Qmax,
653
+ Pmin=elm.Pmin,
654
+ Pmax=elm.Pmax,
655
+ Snom=elm.Snom,
656
+ charge_efficiency=elm.charge_efficiency,
657
+ discharge_efficiency=elm.discharge_efficiency,
658
+ is_controlled=elm.is_controlled, )
659
+
660
+ if use_time_series:
661
+ gen.active = elm.active_prof.astype(BINT) if time_indices is None else elm.active_prof.astype(BINT)[
662
+ time_indices]
663
+
664
+ if opf_results is None:
665
+ P = elm.P_prof.toarray()
666
+ else:
667
+ P = opf_results.generator_power[:, k] - opf_results.generator_shedding[:, k]
668
+
669
+ gen.P = P if time_indices is None else P[time_indices]
670
+
671
+ # gen.P = elm.P_prof if time_indices is None else elm.P_prof[time_indices]
672
+ gen.Vset = elm.Vset_prof.toarray() if time_indices is None else elm.Vset_prof.toarray()[time_indices]
673
+ gen.cost_0 = elm.Cost0_prof.toarray() if time_indices is None else elm.Cost0_prof.toarray()[time_indices]
674
+ gen.cost_1 = elm.Cost_prof.toarray() if time_indices is None else elm.Cost_prof.toarray()[time_indices]
675
+ gen.cost_2 = elm.Cost2_prof.toarray() if time_indices is None else elm.Cost2_prof.toarray()[time_indices]
676
+ else:
677
+ gen.active = np.ones(n_time, dtype=BINT) * int(elm.active)
678
+
679
+ if opf_results is None:
680
+ gen.P = np.full(n_time, elm.P, dtype=float)
681
+ else:
682
+ gen.P = np.full(n_time, opf_results.battery_power[k], dtype=float)
683
+
684
+ gen.Vset = np.ones(n_time, dtype=float) * elm.Vset
685
+ gen.setAllCost0(elm.Cost0)
686
+ gen.setAllCost1(elm.Cost)
687
+ gen.setAllCost2(elm.Cost2)
688
+
689
+ return gen
690
+
691
+
692
+ def add_battery_data(circuit: MultiCircuit,
693
+ gslv_grid: "pg.MultiCircuit",
694
+ bus_dict: Dict[str, "pg.Bus"],
695
+ time_series: bool,
696
+ n_time: int = 1,
697
+ time_indices: Union[IntVec, None] = None,
698
+ opf_results: Union[None, OptimalPowerFlowResults] = None):
699
+ """
700
+
701
+ :param circuit: GridCal circuit
702
+ :param gslv_grid: GSLV circuit
703
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
704
+ :param bus_dict: dictionary of bus id to GSLV bus object
705
+ :param n_time: number of time steps
706
+ :param time_indices: Array of time indices
707
+ :param opf_results: OptimelPowerFlowResults (optional)
708
+ """
709
+ devices = circuit.get_batteries()
710
+
711
+ for k, elm in enumerate(devices):
712
+ batt = convert_battery(k=k, elm=elm, bus_dict=bus_dict,
713
+ n_time=n_time, use_time_series=time_series,
714
+ time_indices=time_indices, opf_results=opf_results)
715
+
716
+ gslv_grid.add_battery(batt)
717
+
718
+
719
+ def convert_line(elm: dev.Line, bus_dict: Dict[str, "pg.Bus"], n_time: int,
720
+ use_time_series: bool, time_indices: IntVec | None = None, ) -> "pg.Line":
721
+ """
722
+
723
+ :param elm:
724
+ :param bus_dict:
725
+ :param n_time:
726
+ :param use_time_series:
727
+ :param time_indices:
728
+ :return:
729
+ """
730
+ lne = pg.Line(idtag=elm.idtag,
731
+ code=str(elm.code),
732
+ name=elm.name,
733
+ calc_node_from=bus_dict[elm.bus_from.idtag],
734
+ calc_node_to=bus_dict[elm.bus_to.idtag],
735
+ nt=n_time,
736
+ length=elm.length,
737
+ rate=elm.rate,
738
+ active_default=elm.active,
739
+ r=elm.R,
740
+ x=elm.X,
741
+ b=elm.B,
742
+ monitor_loading_default=elm.monitor_loading,
743
+ monitor_contingency_default=elm.contingency_enabled)
744
+
745
+ if use_time_series:
746
+ lne.active = (elm.active_prof.astype(BINT)
747
+ if time_indices is None
748
+ else elm.active_prof.astype(BINT)[time_indices])
749
+
750
+ lne.rates = (elm.rate_prof.toarray()
751
+ if time_indices is None
752
+ else elm.rate_prof.toarray()[time_indices])
753
+
754
+ contingency_rates = elm.rate_prof.toarray() * elm.contingency_factor
755
+
756
+ lne.contingency_rates = (contingency_rates
757
+ if time_indices is None
758
+ else contingency_rates[time_indices])
759
+
760
+ lne.overload_cost = (elm.Cost_prof.toarray()
761
+ if time_indices is None
762
+ else elm.Cost_prof.toarray()[time_indices])
763
+ else:
764
+ lne.setAllOverloadCost(elm.Cost)
765
+
766
+ return lne
767
+
768
+
769
+ def add_line(circuit: MultiCircuit,
770
+ gslv_grid: "pg.MultiCircuit",
771
+ bus_dict: Dict[str, "pg.Bus"],
772
+ time_series: bool,
773
+ n_time: int = 1,
774
+ time_indices: Union[IntVec, None] = None):
775
+ """
776
+
777
+ :param circuit: GridCal circuit
778
+ :param gslv_grid: GSLV circuit
779
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
780
+ :param bus_dict: dictionary of bus id to GSLV bus object
781
+ :param n_time: number of time steps
782
+ :param time_indices: Array of time indices
783
+ """
784
+
785
+ # Compile the lines
786
+ for i, elm in enumerate(circuit.lines):
787
+ lne = convert_line(elm=elm, bus_dict=bus_dict, n_time=n_time,
788
+ use_time_series=time_series, time_indices=time_indices)
789
+ gslv_grid.add_line(lne)
790
+
791
+
792
+ def convert_transformer(elm: dev.Transformer2W, bus_dict: Dict[str, "pg.Bus"], n_time: int,
793
+ use_time_series: bool, time_indices: IntVec | None,
794
+ override_controls: bool) -> "pg.Transformer2W":
795
+ """
796
+
797
+ :param elm:
798
+ :param bus_dict:
799
+ :param n_time:
800
+ :param use_time_series:
801
+ :param time_indices:
802
+ :param override_controls:
803
+ :return:
804
+ """
805
+ tr2 = pg.Transformer2W(idtag=elm.idtag,
806
+ code=str(elm.code),
807
+ name=elm.name,
808
+ calc_node_from=bus_dict[elm.bus_from.idtag],
809
+ calc_node_to=bus_dict[elm.bus_to.idtag],
810
+ nt=n_time,
811
+ Vhigh=elm.HV,
812
+ Vlow=elm.LV,
813
+ rate=elm.rate,
814
+ active_default=elm.active,
815
+ r=elm.R,
816
+ x=elm.X,
817
+ g=elm.G,
818
+ b=elm.B,
819
+ monitor_loading_default=elm.monitor_loading,
820
+ monitor_contingency_default=elm.contingency_enabled,
821
+ tap=elm.tap_module,
822
+ phase=elm.tap_phase)
823
+
824
+ tr2.tap_phase_min = elm.tap_phase_min
825
+ tr2.tap_phase_max = elm.tap_phase_max
826
+ tr2.tap_module_min = elm.tap_module_min
827
+ tr2.tap_module_max = elm.tap_module_max
828
+
829
+ if use_time_series:
830
+ contingency_rates = elm.rate_prof.toarray() * elm.contingency_factor
831
+ active_prof = elm.active_prof.astype(BINT)
832
+
833
+ tr2.active = active_prof if time_indices is None else active_prof[time_indices]
834
+ tr2.rates = elm.rate_prof.toarray() if time_indices is None else elm.rate_prof.toarray()[time_indices]
835
+ tr2.contingency_rates = contingency_rates if time_indices is None else contingency_rates[time_indices]
836
+ tr2.tap = elm.tap_module_prof.toarray() if time_indices is None else elm.tap_module_prof.toarray()[
837
+ time_indices]
838
+ tr2.phase = elm.tap_phase_prof.toarray() if time_indices is None else elm.tap_phase_prof.toarray()[
839
+ time_indices]
840
+ tr2.overload_cost = elm.Cost_prof.toarray()
841
+ else:
842
+ tr2.setAllOverloadCost(elm.Cost)
843
+
844
+ # ctrl_dict = {
845
+ # TransformerControlType.fixed: pg.BranchControlModes.Fixed,
846
+ # TransformerControlType.Pf: pg.BranchControlModes.BranchPt,
847
+ # TransformerControlType.Qt: pg.BranchControlModes.BranchQt,
848
+ # TransformerControlType.PtQt: pg.BranchControlModes.BranchPt,
849
+ # TransformerControlType.V: pg.BranchControlModes.BranchVt,
850
+ # TransformerControlType.PtV: pg.BranchControlModes.BranchPt,
851
+ # }
852
+
853
+ # control vars
854
+ if override_controls:
855
+ tr2.tap_module_control_mode = pg.TapModuleControl.fixed
856
+ tr2.tap_phase_control_mode = pg.TapPhaseControl.fixed
857
+ else:
858
+ # tr2.setAllControlMode(ctrl_dict[elm.control_mode])
859
+ pass
860
+
861
+ return tr2
862
+
863
+
864
+ def add_transformers(circuit: MultiCircuit,
865
+ gslv_grid: "pg.MultiCircuit",
866
+ bus_dict: Dict[str, "pg.Bus"],
867
+ time_series: bool,
868
+ n_time: int = 1,
869
+ time_indices: Union[IntVec, None] = None,
870
+ override_controls=False):
871
+ """
872
+
873
+ :param circuit: GridCal circuit
874
+ :param gslv_grid: GSLV circuit
875
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
876
+ :param bus_dict: dictionary of bus id to GSLV bus object
877
+ :param n_time: number of time steps
878
+ :param time_indices: Array of time indices
879
+ :param override_controls: If true the controls are set to Fix
880
+ """
881
+
882
+ for i, elm in enumerate(circuit.transformers2w):
883
+ tr2 = convert_transformer(elm=elm, bus_dict=bus_dict, n_time=n_time,
884
+ use_time_series=time_series, time_indices=time_indices,
885
+ override_controls=override_controls)
886
+ gslv_grid.add_transformer(tr2)
887
+
888
+
889
+ def convert_transformer3w(elm: dev.Transformer3W, bus_dict: Dict[str, "pg.Bus"], n_time: int,
890
+ use_time_series: bool, time_indices: IntVec | None,
891
+ override_controls: bool) -> "pg.Transformer3W":
892
+ # ctrl_dict = {
893
+ # TransformerControlType.fixed: pg.BranchControlModes.Fixed,
894
+ # TransformerControlType.Pf: pg.BranchControlModes.BranchPt,
895
+ # TransformerControlType.Qt: pg.BranchControlModes.BranchQt,
896
+ # TransformerControlType.PtQt: pg.BranchControlModes.BranchPt,
897
+ # TransformerControlType.V: pg.BranchControlModes.BranchVt,
898
+ # TransformerControlType.PtV: pg.BranchControlModes.BranchPt,
899
+ # }
900
+
901
+ tr3 = pg.Transformer3W(idtag=elm.idtag,
902
+ code=str(elm.code),
903
+ name=elm.name,
904
+ nt=n_time,
905
+ active=elm.active,
906
+ bus1=bus_dict[elm.bus1.idtag] if elm.bus1 else None,
907
+ bus2=bus_dict[elm.bus2.idtag] if elm.bus2 else None,
908
+ bus3=bus_dict[elm.bus3.idtag] if elm.bus3 else None,
909
+ V1=elm.V1,
910
+ V2=elm.V2,
911
+ V3=elm.V3,
912
+ r12=elm.r12, r23=elm.r23, r31=elm.r31,
913
+ x12=elm.x12, x23=elm.x23, x31=elm.x31,
914
+ rate12=elm.rate1, rate23=elm.rate2, rate31=elm.rate3)
915
+
916
+ # this is because the central node is in the buses list already from GridCal
917
+ tr3.central_node = bus_dict[elm.bus0.idtag]
918
+
919
+ if use_time_series:
920
+ pass
921
+ else:
922
+ pass
923
+
924
+ return tr3
925
+
926
+
927
+ def add_transformers3w(circuit: MultiCircuit,
928
+ gslv_grid: "pg.MultiCircuit",
929
+ bus_dict: Dict[str, "pg.Bus"],
930
+ time_series: bool,
931
+ n_time=1,
932
+ time_indices: Union[IntVec, None] = None,
933
+ override_controls=False):
934
+ """
935
+
936
+ :param circuit: GridCal circuit
937
+ :param gslv_grid: GSLV circuit
938
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
939
+ :param bus_dict: dictionary of bus id to GSLV bus object
940
+ :param n_time: number of time steps
941
+ :param time_indices: Array of time indices
942
+ :param override_controls: If true the controls are set to Fix
943
+ """
944
+ for i, elm in enumerate(circuit.transformers3w):
945
+ tr3 = convert_transformer3w(elm=elm, bus_dict=bus_dict, n_time=n_time,
946
+ use_time_series=time_series, time_indices=time_indices,
947
+ override_controls=override_controls)
948
+
949
+ # because the central bus was added already, do not add it here
950
+ gslv_grid.add_transformer_3w(tr3, add_central_node=False)
951
+
952
+
953
+ def convert_vsc(elm: dev.VSC, bus_dict: Dict[str, "pg.Bus"], n_time: int,
954
+ use_time_series: bool, time_indices: IntVec | None) -> "pg.Vsc":
955
+ """
956
+
957
+ :param elm:
958
+ :param bus_dict:
959
+ :param n_time:
960
+ :param use_time_series:
961
+ :param time_indices:
962
+ :return:
963
+ """
964
+ vsc = pg.Vsc(idtag=elm.idtag,
965
+ code=str(elm.code),
966
+ name=elm.name,
967
+ calc_node_from=bus_dict[elm.bus_from.idtag],
968
+ calc_node_to=bus_dict[elm.bus_to.idtag],
969
+ nt=n_time,
970
+ active=elm.active, )
971
+
972
+ vsc.alpha1 = elm.alpha1
973
+ vsc.alpha2 = elm.alpha2
974
+ vsc.alpha3 = elm.alpha3
975
+
976
+ vsc.setAllMonitorloading(elm.monitor_loading)
977
+ vsc.setAllContingencyenabled(elm.contingency_enabled)
978
+
979
+ if use_time_series:
980
+ vsc.active = elm.active_prof.astype(BINT) if time_indices is None else elm.active_prof.astype(BINT)[
981
+ time_indices]
982
+ vsc.rates = elm.rate_prof.toarray() if time_indices is None else elm.rate_prof.toarray()[time_indices]
983
+ contingency_rates = elm.rate_prof.toarray() * elm.contingency_factor
984
+ vsc.contingency_rates = contingency_rates if time_indices is None else contingency_rates[time_indices]
985
+ vsc.overload_cost = elm.Cost_prof.toarray()
986
+ else:
987
+ vsc.setAllRates(elm.rate)
988
+ vsc.setAllOverloadCost(elm.Cost)
989
+
990
+ return vsc
991
+
992
+
993
+ def add_vscs(circuit: MultiCircuit,
994
+ gslv_grid: "pg.MultiCircuit",
995
+ bus_dict: Dict[str, "pg.Bus"],
996
+ time_series: bool,
997
+ n_time: int = 1,
998
+ time_indices: Union[IntVec, None] = None):
999
+ """
1000
+
1001
+ :param circuit: GridCal circuit
1002
+ :param gslv_grid: GSLV circuit
1003
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
1004
+ :param bus_dict: dictionary of bus id to GSLV bus object
1005
+ :param n_time: number of time steps
1006
+ :param time_indices: Array of time indices
1007
+ """
1008
+ for i, elm in enumerate(circuit.vsc_devices):
1009
+ vsc = convert_vsc(elm=elm, bus_dict=bus_dict, n_time=n_time,
1010
+ use_time_series=time_series, time_indices=time_indices)
1011
+ gslv_grid.add_vsc(vsc)
1012
+
1013
+
1014
+ def convert_dc_line(elm: dev.DcLine, bus_dict: Dict[str, "pg.Bus"], n_time: int,
1015
+ use_time_series: bool, time_indices: IntVec | None) -> "pg.DcLine":
1016
+ """
1017
+
1018
+ :param elm:
1019
+ :param bus_dict:
1020
+ :param n_time:
1021
+ :param use_time_series:
1022
+ :param time_indices:
1023
+ :return:
1024
+ """
1025
+ lne = pg.DcLine(idtag=elm.idtag,
1026
+ name=elm.name,
1027
+ calc_node_from=bus_dict[elm.bus_from.idtag],
1028
+ calc_node_to=bus_dict[elm.bus_to.idtag],
1029
+ nt=n_time,
1030
+ length=elm.length,
1031
+ rate=elm.rate,
1032
+ active_default=elm.active,
1033
+ r=elm.R,
1034
+ monitor_loading_default=elm.monitor_loading,
1035
+ monitor_contingency_default=elm.contingency_enabled
1036
+ )
1037
+
1038
+ if use_time_series:
1039
+ lne.active = (elm.active_prof.astype(BINT)
1040
+ if time_indices is None
1041
+ else elm.active_prof.astype(BINT)[time_indices])
1042
+
1043
+ lne.rates = elm.rate_prof.toarray() if time_indices is None else elm.rate_prof.toarray()[time_indices]
1044
+
1045
+ contingency_rates = elm.rate_prof.toarray() * elm.contingency_factor
1046
+ lne.contingency_rates = contingency_rates if time_indices is None else contingency_rates[time_indices]
1047
+ lne.overload_cost = elm.Cost_prof.toarray()
1048
+ else:
1049
+ lne.setAllOverloadCost(elm.Cost)
1050
+
1051
+ return lne
1052
+
1053
+
1054
+ def add_dc_lines(circuit: MultiCircuit,
1055
+ gslv_grid: "pg.MultiCircuit",
1056
+ bus_dict: Dict[str, "pg.Bus"],
1057
+ time_series: bool,
1058
+ n_time: int = 1,
1059
+ time_indices: Union[IntVec, None] = None):
1060
+ """
1061
+
1062
+ :param circuit: GridCal circuit
1063
+ :param gslv_grid: GSLV circuit
1064
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
1065
+ :param bus_dict: dictionary of bus id to GSLV bus object
1066
+ :param n_time: number of time steps
1067
+ :param time_indices: Array of time indices
1068
+ """
1069
+ # Compile the lines
1070
+ for i, elm in enumerate(circuit.dc_lines):
1071
+ lne = convert_dc_line(elm=elm, bus_dict=bus_dict, n_time=n_time,
1072
+ use_time_series=time_series, time_indices=time_indices)
1073
+ gslv_grid.add_dc_line(lne)
1074
+
1075
+
1076
+ def convert_hvdc_line(elm: dev.HvdcLine, bus_dict: Dict[str, "pg.Bus"], n_time: int,
1077
+ use_time_series: bool, time_indices: IntVec | None) -> "pg.HvdcLine":
1078
+ """
1079
+
1080
+ :param elm:
1081
+ :param bus_dict:
1082
+ :param n_time:
1083
+ :param use_time_series:
1084
+ :param time_indices:
1085
+ :return:
1086
+ """
1087
+ cmode_dict = {HvdcControlType.type_0_free: pg.HvdcControlType.HvdcControlAngleDroop,
1088
+ HvdcControlType.type_1_Pset: pg.HvdcControlType.HvdcControlPfix}
1089
+
1090
+ hvdc = pg.HvdcLine(idtag=elm.idtag,
1091
+ code=str(elm.code),
1092
+ name=elm.name,
1093
+ calc_node_from=bus_dict[elm.bus_from.idtag],
1094
+ calc_node_to=bus_dict[elm.bus_to.idtag],
1095
+ cn_from=None,
1096
+ cn_to=None,
1097
+ nt=n_time,
1098
+ active_default=int(elm.active),
1099
+ rate=elm.rate,
1100
+ contingency_rate=elm.rate * elm.contingency_factor,
1101
+ monitor_loading_default=1,
1102
+ monitor_contingency_default=1,
1103
+ P=elm.Pset,
1104
+ Vf=elm.Vset_f,
1105
+ Vt=elm.Vset_t,
1106
+ r=elm.r,
1107
+ angle_droop=elm.angle_droop,
1108
+ length=elm.length,
1109
+ min_firing_angle_f=elm.min_firing_angle_f,
1110
+ max_firing_angle_f=elm.max_firing_angle_f,
1111
+ min_firing_angle_t=elm.min_firing_angle_t,
1112
+ max_firing_angle_t=elm.max_firing_angle_t,
1113
+ control_mode=cmode_dict[elm.control_mode])
1114
+
1115
+ # hvdc.monitor_loading = elm.monitor_loading
1116
+ # hvdc.contingency_enabled = elm.contingency_enabled
1117
+
1118
+ if use_time_series:
1119
+ hvdc.active = elm.active_prof.astype(BINT) if time_indices is None else elm.active_prof.astype(BINT)[
1120
+ time_indices]
1121
+ hvdc.rates = elm.rate_prof.toarray() if time_indices is None else elm.rate_prof.toarray()[time_indices]
1122
+ hvdc.Vf = elm.Vset_f_prof.toarray() if time_indices is None else elm.Vset_f_prof.toarray()[time_indices]
1123
+ hvdc.Vt = elm.Vset_t_prof.toarray() if time_indices is None else elm.Vset_t_prof.toarray()[time_indices]
1124
+
1125
+ contingency_rates = elm.rate_prof.toarray() * elm.contingency_factor
1126
+ hvdc.contingency_rates = contingency_rates if time_indices is None else contingency_rates[time_indices]
1127
+
1128
+ hvdc.angle_droop = (elm.angle_droop_prof.toarray() if time_indices is None else
1129
+ elm.angle_droop_prof.toarray()[time_indices])
1130
+ hvdc.overload_cost = elm.Cost_prof.toarray()
1131
+ else:
1132
+ hvdc.contingency_rates = elm.rate * elm.contingency_factor
1133
+ hvdc.angle_droop = elm.angle_droop
1134
+ hvdc.setAllOverloadCost(elm.Cost)
1135
+ hvdc.setAllControlMode(cmode_dict[elm.control_mode])
1136
+
1137
+ return hvdc
1138
+
1139
+
1140
+ def add_hvdcs(circuit: MultiCircuit,
1141
+ gslv_grid: "pg.MultiCircuit",
1142
+ bus_dict: Dict[str, "pg.Bus"],
1143
+ time_series: bool,
1144
+ n_time=1,
1145
+ time_indices: Union[IntVec, None] = None):
1146
+ """
1147
+
1148
+ :param circuit: GridCal circuit
1149
+ :param gslv_grid: GSLV circuit
1150
+ :param time_series: compile the time series from GridCal? otherwise just the snapshot
1151
+ :param bus_dict: dictionary of bus id to GSLV bus object
1152
+ :param n_time: number of time steps
1153
+ :param time_indices: Array of time indices
1154
+ """
1155
+
1156
+ for i, elm in enumerate(circuit.hvdc_lines):
1157
+ hvdc = convert_hvdc_line(elm=elm, bus_dict=bus_dict, n_time=n_time,
1158
+ use_time_series=time_series, time_indices=time_indices)
1159
+ gslv_grid.add_hvdc_line(hvdc)
1160
+
1161
+
1162
+ def to_gslv(circuit: MultiCircuit,
1163
+ use_time_series: bool,
1164
+ time_indices: Union[IntVec, None] = None,
1165
+ override_branch_controls=False,
1166
+ opf_results: Union[None, OptimalPowerFlowResults] = None):
1167
+ """
1168
+ Convert GridCal circuit to GSLV
1169
+ :param circuit: MultiCircuit
1170
+ :param use_time_series: compile the time series from GridCal? otherwise just the snapshot
1171
+ :param time_indices: Array of time indices
1172
+ :param override_branch_controls: If true the branch controls are set to Fix
1173
+ :param opf_results:
1174
+ :return: pg.MultiCircuit instance
1175
+ """
1176
+
1177
+ if time_indices is None:
1178
+ n_time = circuit.get_time_number() if use_time_series else 1
1179
+ if n_time == 0:
1180
+ n_time = 1
1181
+ else:
1182
+ n_time = len(time_indices)
1183
+
1184
+ pg_grid = pg.MultiCircuit(name=circuit.name, nt=n_time)
1185
+ # pg_grid.idtag = circuit.idtag
1186
+
1187
+ build_status_dict = {
1188
+ BuildStatus.Planned: pg.BuildStatus.Planned,
1189
+ BuildStatus.Commissioned: pg.BuildStatus.Commissioned,
1190
+ BuildStatus.Candidate: pg.BuildStatus.Candidate,
1191
+ BuildStatus.Decommissioned: pg.BuildStatus.Decommissioned,
1192
+ BuildStatus.PlannedDecommission: pg.BuildStatus.PlannedDecommission,
1193
+ }
1194
+
1195
+ area_dict = add_areas(circuit=circuit, gslv_grid=pg_grid)
1196
+ zone_dict = add_zones(circuit=circuit, gslv_grid=pg_grid)
1197
+
1198
+ con_groups_dict = add_contingency_groups(circuit=circuit, gslv_grid=pg_grid)
1199
+
1200
+ add_contingencies(circuit=circuit, gslv_grid=pg_grid, n_time=n_time, groups_dict=con_groups_dict)
1201
+
1202
+ inv_groups_dict = add_investment_groups(circuit=circuit, gslv_grid=pg_grid)
1203
+
1204
+ add_investments(circuit=circuit, gslv_grid=pg_grid, groups_dict=inv_groups_dict)
1205
+
1206
+ bus_dict = add_buses(
1207
+ circuit=circuit,
1208
+ gslv_grid=pg_grid,
1209
+ use_time_series=use_time_series,
1210
+ n_time=n_time,
1211
+ time_indices=time_indices,
1212
+ area_dict=area_dict
1213
+ )
1214
+
1215
+ add_loads(
1216
+ circuit=circuit,
1217
+ gslv_grid=pg_grid,
1218
+ bus_dict=bus_dict,
1219
+ use_time_series=use_time_series,
1220
+ n_time=n_time,
1221
+ time_indices=time_indices,
1222
+ build_status_dict=build_status_dict
1223
+ )
1224
+
1225
+ add_static_generators(
1226
+ circuit=circuit,
1227
+ gslv_grid=pg_grid,
1228
+ bus_dict=bus_dict,
1229
+ time_series=use_time_series,
1230
+ n_time=n_time,
1231
+ time_indices=time_indices
1232
+
1233
+ )
1234
+
1235
+ add_shunts(
1236
+ circuit=circuit,
1237
+ gslv_grid=pg_grid,
1238
+ bus_dict=bus_dict,
1239
+ time_series=use_time_series,
1240
+ n_time=n_time,
1241
+ time_indices=time_indices
1242
+ )
1243
+
1244
+ add_generators(
1245
+ circuit=circuit,
1246
+ gslv_grid=pg_grid,
1247
+ bus_dict=bus_dict,
1248
+ time_series=use_time_series,
1249
+ n_time=n_time,
1250
+ time_indices=time_indices,
1251
+ opf_results=opf_results
1252
+ )
1253
+
1254
+ add_battery_data(
1255
+ circuit=circuit,
1256
+ gslv_grid=pg_grid,
1257
+ bus_dict=bus_dict,
1258
+ time_series=use_time_series,
1259
+ n_time=n_time,
1260
+ time_indices=time_indices,
1261
+ opf_results=opf_results
1262
+ )
1263
+
1264
+ add_line(
1265
+ circuit=circuit,
1266
+ gslv_grid=pg_grid,
1267
+ bus_dict=bus_dict,
1268
+ time_series=use_time_series,
1269
+ n_time=n_time,
1270
+ time_indices=time_indices
1271
+ )
1272
+
1273
+ add_transformers(
1274
+ circuit=circuit,
1275
+ gslv_grid=pg_grid,
1276
+ bus_dict=bus_dict,
1277
+ time_series=use_time_series,
1278
+ n_time=n_time,
1279
+ time_indices=time_indices,
1280
+ override_controls=override_branch_controls
1281
+ )
1282
+
1283
+ add_transformers3w(
1284
+ circuit=circuit,
1285
+ gslv_grid=pg_grid,
1286
+ bus_dict=bus_dict,
1287
+ time_series=use_time_series,
1288
+ n_time=n_time,
1289
+ time_indices=time_indices,
1290
+ override_controls=override_branch_controls
1291
+ )
1292
+
1293
+ add_vscs(
1294
+ circuit=circuit,
1295
+ gslv_grid=pg_grid,
1296
+ bus_dict=bus_dict,
1297
+ time_series=use_time_series,
1298
+ n_time=n_time,
1299
+ time_indices=time_indices
1300
+ )
1301
+
1302
+ add_dc_lines(
1303
+ circuit=circuit,
1304
+ gslv_grid=pg_grid,
1305
+ bus_dict=bus_dict,
1306
+ time_series=use_time_series,
1307
+ n_time=n_time,
1308
+ time_indices=time_indices
1309
+ )
1310
+
1311
+ add_hvdcs(
1312
+ circuit=circuit,
1313
+ gslv_grid=pg_grid,
1314
+ bus_dict=bus_dict,
1315
+ time_series=use_time_series,
1316
+ n_time=n_time,
1317
+ time_indices=time_indices
1318
+ )
1319
+
1320
+ # pg.FileHandler().save(npaCircuit, circuit.name + "_circuit.GSLV")
1321
+
1322
+ return pg_grid, (bus_dict, area_dict, zone_dict)
1323
+
1324
+
1325
+ class FakeAdmittances:
1326
+ """
1327
+ Fake admittances class needed to make the translation
1328
+ """
1329
+
1330
+ def __init__(self) -> None:
1331
+ self.Ybus = None
1332
+ self.Yf = None
1333
+ self.Yt = None
1334
+
1335
+
1336
+ def get_snapshots_from_gslv(circuit: MultiCircuit, override_branch_controls=False) -> List[NumericalCircuit]:
1337
+ """
1338
+
1339
+ :param circuit:
1340
+ :param override_branch_controls:
1341
+ :return:
1342
+ """
1343
+
1344
+ gslv_grid, (bus_dict, area_dict, zone_dict) = to_gslv(circuit,
1345
+ use_time_series=False,
1346
+ override_branch_controls=override_branch_controls)
1347
+
1348
+ logger = pg.Logger()
1349
+ npa_data_lst = pg.compile(gslv_grid, logger, t=0).splitIntoIslands()
1350
+
1351
+ data_lst = list()
1352
+
1353
+ for npa_data in npa_data_lst:
1354
+ data = NumericalCircuit(nbus=0,
1355
+ nbr=0,
1356
+ nhvdc=0,
1357
+ nvsc=0,
1358
+ nload=0,
1359
+ ngen=0,
1360
+ nbatt=0,
1361
+ nshunt=0,
1362
+ nfluidnode=0,
1363
+ nfluidturbine=0,
1364
+ nfluidpump=0,
1365
+ nfluidp2x=0,
1366
+ nfluidpath=0,
1367
+ sbase=0,
1368
+ t_idx=0)
1369
+
1370
+ conn = npa_data.getConnectivity()
1371
+ inj = npa_data.getInjections()
1372
+ tpes = npa_data.getSimulationIndices(inj.S0)
1373
+ adm = npa_data.getAdmittances(conn)
1374
+ lin = npa_data.getLinearMatrices(conn)
1375
+ series_adm = npa_data.getSeriesAdmittances(conn)
1376
+ fd_adm = npa_data.getFastDecoupledAdmittances(conn, tpes)
1377
+ qlim = npa_data.getQLimits()
1378
+
1379
+ data.Vbus_ = npa_data.Vbus.reshape(-1, 1)
1380
+ data.Sbus_ = inj.S0.reshape(-1, 1)
1381
+ data.Ibus_ = inj.I0.reshape(-1, 1)
1382
+ data.passive_branch_data.names = np.array(npa_data.passive_branch_data.names)
1383
+ data.passive_branch_data.virtual_tap_f = npa_data.passive_branch_data.vtap_f
1384
+ data.passive_branch_data.virtual_tap_t = npa_data.passive_branch_data.vtap_t
1385
+ data.passive_branch_data.original_idx = npa_data.passive_branch_data.original_indices
1386
+
1387
+ data.bus_data.names = np.array(npa_data.bus_data.names)
1388
+ data.bus_data.original_idx = npa_data.bus_data.original_indices
1389
+
1390
+ data.admittances_ = FakeAdmittances()
1391
+ data.admittances_.Ybus = adm.Ybus
1392
+ data.admittances_.Yf = adm.Yf
1393
+ data.admittances_.Yt = adm.Yt
1394
+
1395
+ data.Bbus_ = lin.Bbus
1396
+ data.Bf_ = lin.Bf
1397
+
1398
+ data.Yseries_ = series_adm.Yseries
1399
+ data.Yshunt_ = series_adm.Yshunt
1400
+
1401
+ data.B1_ = fd_adm.B1
1402
+ data.B2_ = fd_adm.B2
1403
+
1404
+ data.Cf_ = conn.Cf
1405
+ data.Ct_ = conn.Ct
1406
+
1407
+ data.bus_data.bus_types = tpes.types
1408
+ data.pq_ = tpes.pq
1409
+ data.pv_ = tpes.pv
1410
+ data.vd_ = tpes.vd
1411
+ data.pqpv_ = tpes.no_slack
1412
+
1413
+ data.Qmax_bus_ = qlim.qmax_bus
1414
+ data.Qmin_bus_ = qlim.qmin_bus
1415
+
1416
+ control_indices = npa_data.getSimulationIndices(Sbus=data.Sbus_[:, 0])
1417
+
1418
+ data.k_pf_tau = control_indices.k_pf_tau
1419
+ data.k_qf_m = control_indices.k_qf_m
1420
+ data.k_zero_beq = control_indices.k_qf_beq
1421
+ data.k_vf_beq = control_indices.k_vf_beq
1422
+ data.k_vt_m = control_indices.k_v_m
1423
+ data.k_qt_m = control_indices.k_qt_m
1424
+ data.k_pf_dp = control_indices.k_pf_dp
1425
+ data.i_vsc = control_indices.i_vsc
1426
+ data.i_vf_beq = control_indices.i_vf_beq
1427
+ data.i_vt_m = control_indices.i_vt_m
1428
+
1429
+ data_lst.append(data)
1430
+
1431
+ return data_lst
1432
+
1433
+
1434
+ def get_gslv_pf_options(opt: PowerFlowOptions) -> "pg.PowerFlowOptions":
1435
+ """
1436
+ Translate GridCal power flow options to GSLV power flow options
1437
+ :param opt:
1438
+ :return:
1439
+ """
1440
+ solver_dict = {SolverType.NR: pg.SolverType.NR,
1441
+ SolverType.DC: pg.SolverType.DC,
1442
+ SolverType.HELM: pg.SolverType.HELM,
1443
+ SolverType.IWAMOTO: pg.SolverType.IWAMOTO,
1444
+ SolverType.LM: pg.SolverType.LM,
1445
+ SolverType.LACPF: pg.SolverType.LACPF,
1446
+ SolverType.FASTDECOUPLED: pg.SolverType.FD
1447
+ }
1448
+
1449
+ if opt.solver_type in solver_dict.keys():
1450
+ solver_type = solver_dict[opt.solver_type]
1451
+ else:
1452
+ solver_type = pg.SolverType.NR
1453
+
1454
+ """
1455
+ solver_type: GSLVpa.SolverType = <SolverType.NR: 0>,
1456
+ retry_with_other_methods: bool = True,
1457
+ verbose: bool = False,
1458
+ initialize_with_existing_solution: bool = False,
1459
+ tolerance: float = 1e-06,
1460
+ max_iter: int = 15,
1461
+ control_q_mode: GSLVpa.ReactivePowerControlMode = <ReactivePowerControlMode.NoControl: 0>,
1462
+ tap_control_mode: GSLVpa.TapsControlMode = <TapsControlMode.NoControl: 0>,
1463
+ distributed_slack: bool = False,
1464
+ ignore_single_node_islands: bool = False,
1465
+ correction_parameter: float = 0.5,
1466
+ mu0: float = 1.0
1467
+ """
1468
+
1469
+ return pg.PowerFlowOptions(solver_type=solver_type,
1470
+ retry_with_other_methods=opt.retry_with_other_methods,
1471
+ verbose=opt.verbose,
1472
+ initialize_with_existing_solution=opt.use_stored_guess,
1473
+ tolerance=opt.tolerance,
1474
+ max_iter=opt.max_iter,
1475
+ control_q_mode=opt.control_Q,
1476
+ distributed_slack=opt.distributed_slack,
1477
+ correction_parameter=0.5,
1478
+ mu0=opt.trust_radius)
1479
+
1480
+
1481
+ def gslv_pf(circuit: MultiCircuit,
1482
+ pf_opt: PowerFlowOptions,
1483
+ time_series: bool = False,
1484
+ time_indices: Union[IntVec, None] = None,
1485
+ opf_results: Union[None, OptimalPowerFlowResults] = None) -> "pg.PowerFlowResults":
1486
+ """
1487
+ GSLV power flow
1488
+ :param circuit: MultiCircuit instance
1489
+ :param pf_opt: Power Flow Options
1490
+ :param time_series: Compile with GridCal time series?
1491
+ :param time_indices: Array of time indices
1492
+ :param opf_results: Instance of
1493
+ :return: GSLV Power flow results object
1494
+ """
1495
+ override_branch_controls = not (pf_opt.control_taps_modules and pf_opt.control_taps_phase)
1496
+
1497
+ gslv_grid, _ = to_gslv(circuit,
1498
+ use_time_series=time_series,
1499
+ time_indices=None,
1500
+ override_branch_controls=override_branch_controls,
1501
+ opf_results=opf_results)
1502
+
1503
+ pf_options = get_gslv_pf_options(pf_opt)
1504
+
1505
+ if time_series:
1506
+ # it is already sliced to the relevant time indices
1507
+ if time_indices is None:
1508
+ time_indices = [i for i in range(circuit.get_time_number())]
1509
+ else:
1510
+ time_indices = list(time_indices)
1511
+ n_threads = 0 # max threads
1512
+ else:
1513
+ time_indices = [0]
1514
+ n_threads = 1
1515
+
1516
+ pf_res = pg.multi_island_pf(grid=gslv_grid,
1517
+ options=pf_options,
1518
+ time_indices=time_indices,
1519
+ n_threads=n_threads)
1520
+
1521
+ return pf_res
1522
+
1523
+
1524
+ def translate_gslv_pf_results(grid: MultiCircuit, res: "pg.PowerFlowResults") -> PowerFlowResults:
1525
+ """
1526
+ Translate the GSLV Power Analytics results back to GridCal
1527
+ :param grid: MultiCircuit instance
1528
+ :param res: GSLV's PowerFlowResults instance
1529
+ :return: PowerFlowResults instance
1530
+ """
1531
+ results = PowerFlowResults(n=grid.get_bus_number(),
1532
+ m=grid.get_branch_number_wo_hvdc(),
1533
+ n_hvdc=grid.get_hvdc_number(),
1534
+ n_vsc=grid.get_vsc_number(),
1535
+ n_gen=grid.get_generators_number(),
1536
+ n_batt=grid.get_batteries_number(),
1537
+ n_sh=grid.get_shunt_like_device_number(),
1538
+ bus_names=res.bus_names,
1539
+ branch_names=res.branch_names,
1540
+ hvdc_names=res.hvdc_names,
1541
+ vsc_names=grid.get_vsc_names(),
1542
+ gen_names=grid.get_generator_names(),
1543
+ batt_names=grid.get_battery_names(),
1544
+ sh_names=grid.get_shunt_like_devices_names(),
1545
+ bus_types=res.bus_types)
1546
+
1547
+ results.voltage = res.voltage[0, :]
1548
+ results.Sbus = res.Scalc[0, :]
1549
+ results.Sf = res.Sf[0, :]
1550
+ results.St = res.St[0, :]
1551
+ results.loading = res.Loading[0, :]
1552
+ results.losses = res.Losses[0, :]
1553
+ # results.Vbranch = res.Vbranch[0, :]
1554
+ # results.If = res.If[0, :]
1555
+ # results.It = res.It[0, :]
1556
+ results.Beq = res.Beq[0, :]
1557
+ results.m = res.tap_module[0, :]
1558
+ results.tap_angle = res.tap_angle[0, :]
1559
+ results.F = res.F
1560
+ results.T = res.T
1561
+ results.hvdc_F = res.hvdc_F
1562
+ results.hvdc_T = res.hvdc_T
1563
+ results.Pf_hvdc = res.hvdc_Pf[0, :]
1564
+ results.Pt_hvdc = res.hvdc_Pt[0, :]
1565
+ results.loading_hvdc = res.hvdc_loading[0, :]
1566
+ results.losses_hvdc = res.hvdc_losses[0, :]
1567
+ results.bus_area_indices = grid.get_bus_area_indices()
1568
+ # results.area_names = [a.name for a in grid.areas]
1569
+ # results.bus_types = convert_bus_types(res.bus_types[0]) # this is a list of lists
1570
+
1571
+ for rep in res.stats[0]:
1572
+ report = ConvergenceReport()
1573
+ for i in range(len(rep.converged)):
1574
+ report.add(method=rep.solver[i].name,
1575
+ converged=rep.converged[i],
1576
+ error=rep.norm_f[i],
1577
+ elapsed=rep.elapsed[i],
1578
+ iterations=rep.iterations[i])
1579
+ results.convergence_reports.append(report)
1580
+
1581
+ return results