distopf 1.1.0.dev2__tar.gz → 1.1.0.dev3__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 (632) hide show
  1. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/PKG-INFO +41 -2
  2. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/README.md +39 -0
  3. distopf-1.1.0.dev3/examples/advanced/TEMPORAL_README.md +249 -0
  4. distopf-1.1.0.dev3/examples/advanced/debug_enapp_123.py +87 -0
  5. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/advanced/run_enapp.py +16 -28
  6. distopf-1.1.0.dev3/examples/advanced/run_enapp_123.py +111 -0
  7. distopf-1.1.0.dev3/examples/advanced/run_enapp_123_isolated.py +110 -0
  8. distopf-1.1.0.dev3/examples/advanced/run_enapp_123_spatiotemporal.py +102 -0
  9. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/advanced/run_enapp_refactor.py +9 -18
  10. distopf-1.1.0.dev3/examples/advanced/run_enapp_tenapp.py +263 -0
  11. distopf-1.1.0.dev3/examples/advanced/run_temporal_comparison.py +241 -0
  12. distopf-1.1.0.dev3/examples/advanced/run_temporal_quick.py +41 -0
  13. distopf-1.1.0.dev3/examples/advanced/run_temporal_tenapp.py +236 -0
  14. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/control_devices/test_regulator_mi.py +3 -4
  15. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/notebooks/adding_generators.ipynb +126 -126
  16. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/notebooks/adding_generators.py +0 -1
  17. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/notebooks/basic_power_flow_examples.ipynb +363 -363
  18. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/notebooks/build_your_own_opf.ipynb +27 -26
  19. distopf-1.1.0.dev3/examples/notebooks/distopf_pesgm2026_tutorial.ipynb +37674 -0
  20. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/optimization/penalties.py +0 -1
  21. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/optimization/thermal_limits.py +0 -2
  22. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/pyomo_multiperiod.py +2 -2
  23. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/pyomo_nlp_123_comparison.py +0 -1
  24. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/pyomo_nlp_13_comparison.py +0 -1
  25. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/pyomo_regulator_control.py +0 -1
  26. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/pyomo_time_comparison.py +2 -2
  27. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/pyproject.toml +1 -1
  28. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/api.py +197 -14
  29. distopf-1.1.0.dev3/src/distopf/distributed/__init__.py +5 -0
  30. distopf-1.1.0.dev3/src/distopf/distributed/spatial/ADMM_MATH_REPORT.md +800 -0
  31. distopf-1.1.0.dev3/src/distopf/distributed/spatial/ENAPP_MATH_REPORT.md +605 -0
  32. distopf-1.1.0.dev3/src/distopf/distributed/spatial/admm_agents.py +770 -0
  33. distopf-1.1.0.dev3/src/distopf/distributed/spatial/boundary.py +198 -0
  34. {distopf-1.1.0.dev2/src/distopf/spatial_decomposition → distopf-1.1.0.dev3/src/distopf/distributed/spatial}/decompose.py +67 -17
  35. distopf-1.1.0.dev3/src/distopf/distributed/spatial/enapp copy.py +1111 -0
  36. distopf-1.1.0.dev3/src/distopf/distributed/spatial/enapp_agents.py +441 -0
  37. distopf-1.1.0.dev3/src/distopf/distributed/spatial/execution.py +612 -0
  38. distopf-1.1.0.dev3/src/distopf/distributed/spatial/messaging.py +223 -0
  39. distopf-1.1.0.dev3/src/distopf/distributed/spatial/penalties.py +31 -0
  40. distopf-1.1.0.dev3/src/distopf/distributed/spatial/schedule.py +72 -0
  41. distopf-1.1.0.dev3/src/distopf/distributed/temporal/__init__.py +44 -0
  42. distopf-1.1.0.dev3/src/distopf/distributed/temporal/objectives.py +250 -0
  43. distopf-1.1.0.dev3/src/distopf/distributed/temporal/tenapp_1o.py +150 -0
  44. distopf-1.1.0.dev3/src/distopf/distributed/temporal/tenapp_admm.py +173 -0
  45. distopf-1.1.0.dev3/src/distopf/distributed/temporal/tenapp_aprx.py +149 -0
  46. distopf-1.1.0.dev3/src/distopf/distributed/temporal/utils.py +215 -0
  47. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/dss_importer/dss_to_csv_converter.py +5 -10
  48. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/fbs.py +16 -10
  49. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/base.py +5 -4
  50. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/base_mp.py +5 -4
  51. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/objectives.py +1 -1
  52. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/decompose.py +7 -11
  53. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/enapp.py +2 -2
  54. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/plot.py +130 -72
  55. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/__init__.py +6 -0
  56. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/constraints.py +146 -2
  57. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/constraints_nlp.py +44 -13
  58. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/lindist.py +62 -8
  59. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/nl_branchflow.py +21 -8
  60. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/objectives.py +256 -0
  61. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/results.py +45 -0
  62. distopf-1.1.0.dev3/src/distopf/pyomo_models/slack_constraints.py +163 -0
  63. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/solvers.py +10 -1
  64. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/results.py +54 -9
  65. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/utils/call_recorder.py +3 -1
  66. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/utils/kcl_check.py +1 -1
  67. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/validators.py +2 -1
  68. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/wrappers/matrix_bess_wrapper.py +4 -1
  69. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/wrappers/matrix_wrapper.py +5 -2
  70. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/wrappers/pyomo_wrapper.py +119 -33
  71. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/dss_converter/unit/test_triplex_pv.py +1 -1
  72. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/pyomo_models/test_dual_extraction.py +0 -2
  73. distopf-1.1.0.dev3/tests/test_admm_agents.py +254 -0
  74. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/test_case.py +1 -4
  75. distopf-1.1.0.dev3/tests/test_distributed_api.py +113 -0
  76. distopf-1.1.0.dev3/tests/test_enapp_integration.py +276 -0
  77. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/test_nlp_backend.py +57 -0
  78. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/test_results.py +30 -0
  79. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/uv.lock +1 -1
  80. distopf-1.1.0.dev2/examples/notebooks/distopf_pesgm2026_tutorial.ipynb +0 -116099
  81. distopf-1.1.0.dev2/src/distopf/spatial_decomposition/enapp.py +0 -581
  82. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/.github/copilot-instructions.md +0 -0
  83. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/.github/skills/run-opf/SKILL.md +0 -0
  84. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/.github/workflows/lint.yml +0 -0
  85. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/.github/workflows/pypi-publish.yml +0 -0
  86. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/.gitignore +0 -0
  87. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/2026-04-21-distopf_2-triplex-agent.md +0 -0
  88. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/DISCLAIMER.md +0 -0
  89. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/LICENSE.md +0 -0
  90. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/column_migration.md +0 -0
  91. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/docs/STYLE_GUIDE.md +0 -0
  92. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/docs/architecture.puml +0 -0
  93. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/README.md +0 -0
  94. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/advanced/profile_matrix.py +0 -0
  95. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/advanced/temp_test.py +0 -0
  96. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/basics/basic_optimal_power_flow.py +0 -0
  97. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/basics/basic_power_flow.py +0 -0
  98. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/basics/basic_power_flow_examples.html +0 -0
  99. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/basics/basic_power_flow_examples.py +0 -0
  100. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/control_devices/fbs13.py +0 -0
  101. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/control_devices/reg_cap_example.py +0 -0
  102. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/data_import/cim_example.py +0 -0
  103. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/data_import/compare_cim_case.py +0 -0
  104. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/data_import/dss_converter_test.py +0 -0
  105. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/data_import/dss_examples.py +0 -0
  106. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/data_import/dss_test_loss.py +0 -0
  107. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/data_import/dss_test_results.txt +0 -0
  108. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/optimization/extract_duals.py +0 -0
  109. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/optimization/penalty_example.py +0 -0
  110. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/build_your_own_opf.py +0 -0
  111. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/build_your_own_opf_static.py +0 -0
  112. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/nlp.py +0 -0
  113. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/pyomo_dss_example.py +0 -0
  114. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/pyomo_mi.py +0 -0
  115. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/pyomo/pyomo_tests.py +0 -0
  116. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/01_simple_power_flow.py +0 -0
  117. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/02_loss_minimization.py +0 -0
  118. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/03_voltage_optimization.py +0 -0
  119. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/04_comparing_wrappers.py +0 -0
  120. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/05_control_strategies.py +0 -0
  121. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/06_visualization_gallery.py +0 -0
  122. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/07_quick_start.py +0 -0
  123. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/08_reactive_power_importance.py +0 -0
  124. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/09_optimization_tradeoffs.py +0 -0
  125. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/10_working_with_results.py +0 -0
  126. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/examples/tutorials/11_fbs_power_flow.py +0 -0
  127. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/__init__.py +0 -0
  128. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/__init__.py +0 -0
  129. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/cim/IEEE123_PV.xml +0 -0
  130. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/cim/IEEE13.xml +0 -0
  131. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/2Bus-1ph-batt/battery_data.csv +0 -0
  132. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/2Bus-1ph-batt/branch_data.csv +0 -0
  133. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/2Bus-1ph-batt/bus_data.csv +0 -0
  134. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/2Bus-1ph-batt/cap_data.csv +0 -0
  135. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/2Bus-1ph-batt/default_loadshape.csv +0 -0
  136. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/2Bus-1ph-batt/gen_data.csv +0 -0
  137. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/2Bus-1ph-batt/pv_loadshape.csv +0 -0
  138. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/2Bus-1ph-batt/reg_data.csv +0 -0
  139. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/3Bus-1ph-batt/battery_data.csv +0 -0
  140. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/3Bus-1ph-batt/branch_data.csv +0 -0
  141. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/3Bus-1ph-batt/bus_data.csv +0 -0
  142. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/3Bus-1ph-batt/cap_data.csv +0 -0
  143. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/3Bus-1ph-batt/default_loadshape.csv +0 -0
  144. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/3Bus-1ph-batt/gen_data.csv +0 -0
  145. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/3Bus-1ph-batt/pv_loadshape.csv +0 -0
  146. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/3Bus-1ph-batt/reg_data.csv +0 -0
  147. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss/branch_data.csv +0 -0
  148. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss/bus_data.csv +0 -0
  149. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss/cap_data.csv +0 -0
  150. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss/gen_data.csv +0 -0
  151. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss/reg_data.csv +0 -0
  152. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/battery_data.csv +0 -0
  153. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/branch_data.csv +0 -0
  154. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/bus_data.csv +0 -0
  155. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/cap_data.csv +0 -0
  156. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/default_loadshape.csv +0 -0
  157. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/gen_data.csv +0 -0
  158. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/pv_loadshape.csv +0 -0
  159. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/reg_data.csv +0 -0
  160. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500/branch_data.csv +0 -0
  161. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500/bus_data.csv +0 -0
  162. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500/cap_data.csv +0 -0
  163. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500/gen_data.csv +0 -0
  164. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500/reg_data.csv +0 -0
  165. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500-primary-network/branch_data.csv +0 -0
  166. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500-primary-network/bus_data.csv +0 -0
  167. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500-primary-network/cap_data.csv +0 -0
  168. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500-primary-network/gen_data.csv +0 -0
  169. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/9500-primary-network/reg_data.csv +0 -0
  170. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123/branch_data.csv +0 -0
  171. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123/bus_data.csv +0 -0
  172. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123/cap_data.csv +0 -0
  173. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123/gen_data.csv +0 -0
  174. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123/reg_data.csv +0 -0
  175. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_30der/bat_data.csv +0 -0
  176. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_30der/branch_data.csv +0 -0
  177. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_30der/bus_data.csv +0 -0
  178. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_30der/cap_data.csv +0 -0
  179. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_30der/default_loadshape.csv +0 -0
  180. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_30der/gen_data.csv +0 -0
  181. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_30der/pv_loadshape.csv +0 -0
  182. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_30der/reg_data.csv +0 -0
  183. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_30der/schedules.csv +0 -0
  184. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_alternate/battery_data.csv +0 -0
  185. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_alternate/branch_data.csv +0 -0
  186. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_alternate/bus_data.csv +0 -0
  187. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_alternate/cap_data.csv +0 -0
  188. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_alternate/default_loadshape.csv +0 -0
  189. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_alternate/gen_data.csv +0 -0
  190. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_alternate/pv_loadshape.csv +0 -0
  191. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_alternate/reg_data.csv +0 -0
  192. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_bat/bat_data.csv +0 -0
  193. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_bat/battery_data_v1.csv +0 -0
  194. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_bat/branch_data.csv +0 -0
  195. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_bat/bus_data.csv +0 -0
  196. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_bat/cap_data.csv +0 -0
  197. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_bat/gen_data.csv +0 -0
  198. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_bat/reg_data.csv +0 -0
  199. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee123_bat/schedules.csv +0 -0
  200. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13/branch_data.csv +0 -0
  201. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13/bus_data.csv +0 -0
  202. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13/cap_data.csv +0 -0
  203. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13/gen_data.csv +0 -0
  204. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13/reg_data.csv +0 -0
  205. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13_battery/battery_data.csv +0 -0
  206. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13_battery/branch_data.csv +0 -0
  207. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13_battery/bus_data.csv +0 -0
  208. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13_battery/cap_data.csv +0 -0
  209. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13_battery/default_loadshape.csv +0 -0
  210. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13_battery/gen_data.csv +0 -0
  211. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13_battery/pv_loadshape.csv +0 -0
  212. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee13_battery/reg_data.csv +0 -0
  213. /distopf-1.1.0.dev2/src/distopf/cases/csv/ieee33/battery_data.csv → /distopf-1.1.0.dev3/src/distopf/cases/csv/ieee33/bat_data.csv +0 -0
  214. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee33/branch_data.csv +0 -0
  215. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee33/bus_data.csv +0 -0
  216. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee33/gen_data.csv +0 -0
  217. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee33/schedules.csv +0 -0
  218. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee34/branch_data.csv +0 -0
  219. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee34/bus_data.csv +0 -0
  220. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee34/cap_data.csv +0 -0
  221. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee34/gen_data.csv +0 -0
  222. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee34/reg_data.csv +0 -0
  223. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500/branch_data.csv +0 -0
  224. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500/bus_data.csv +0 -0
  225. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500/cap_data.csv +0 -0
  226. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500/gen_data.csv +0 -0
  227. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500/reg_data.csv +0 -0
  228. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500_wye/branch_data.csv +0 -0
  229. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500_wye/bus_data.csv +0 -0
  230. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500_wye/cap_data.csv +0 -0
  231. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500_wye/gen_data.csv +0 -0
  232. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/ieee9500_wye/reg_data.csv +0 -0
  233. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/minimal_triplex/branch_data.csv +0 -0
  234. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/minimal_triplex/bus_data.csv +0 -0
  235. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/minimal_triplex/cap_data.csv +0 -0
  236. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/minimal_triplex/gen_data.csv +0 -0
  237. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/minimal_triplex/reg_data.csv +0 -0
  238. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/smartds_small/branch_data.csv +0 -0
  239. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/smartds_small/bus_data.csv +0 -0
  240. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/smartds_small/cap_data.csv +0 -0
  241. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/smartds_small/gen_data.csv +0 -0
  242. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/smartds_small/reg_data.csv +0 -0
  243. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_3ph/branch_data.csv +0 -0
  244. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_3ph/bus_data.csv +0 -0
  245. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_3ph/cap_data.csv +0 -0
  246. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_3ph/gen_data.csv +0 -0
  247. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_3ph/reg_data.csv +0 -0
  248. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_pv/branch_data.csv +0 -0
  249. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_pv/bus_data.csv +0 -0
  250. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_pv/cap_data.csv +0 -0
  251. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_pv/gen_data.csv +0 -0
  252. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/csv/triplex_pv/reg_data.csv +0 -0
  253. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/2Bus/2Bus.DSS +0 -0
  254. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/2BusD/2Bus.DSS +0 -0
  255. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/2Bus_1phase/2Bus1ph.DSS +0 -0
  256. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/IEEE34_BusXY.csv +0 -0
  257. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/IEEELineCodes.dss +0 -0
  258. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod1.dss +0 -0
  259. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod2.dss +0 -0
  260. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/ieee34-2_Curr_Elem.txt +0 -0
  261. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/ieee34-2_Power_elem_kVA.txt +0 -0
  262. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/ieee34-2_RegTaps.txt +0 -0
  263. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/ieee34-2_VLN_Node.txt +0 -0
  264. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/ieee34Mod1.dss +0 -0
  265. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/ieee34Mod2.dss +0 -0
  266. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/34Bus/nmsu_linecode2_ABC.txt +0 -0
  267. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/3Bus/3Bus.DSS +0 -0
  268. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-DY-Bal/4Bus-DY-Bal.DSS +0 -0
  269. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Curr_Elem.Txt +0 -0
  270. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Power_elem_kVA.txt +0 -0
  271. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLL_Node.Txt +0 -0
  272. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLN_Node.Txt +0 -0
  273. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4Bus-GrdYD-Bal.DSS +0 -0
  274. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_Losses.Txt +0 -0
  275. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_VLN_Node.Txt +0 -0
  276. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-OYOD-Bal/4Bus-OYOD-Bal.DSS +0 -0
  277. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-OYOD-UnBal/4bus-OYOD-UnBal.dss +0 -0
  278. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-YD-Bal/4Bus-YD-Bal.DSS +0 -0
  279. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-YY-Bal/4Bus-YY-Bal.DSS +0 -0
  280. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-YYD/Three Winding Transformer Test System-EPRI-2017-Rev4.docx +0 -0
  281. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4Bus-YYD/YYD-Master.DSS +0 -0
  282. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4wire-Delta/Expanded4WireDelta.pdf +0 -0
  283. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4wire-Delta/Kersting4wireIndMotor.dss +0 -0
  284. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Lagging.dss +0 -0
  285. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Leading.dss +0 -0
  286. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/BalancedLoads.dss +0 -0
  287. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/BusCoords.dss +0 -0
  288. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/CableData.dss +0 -0
  289. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/CapControls.dss +0 -0
  290. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/Capacitors.dss +0 -0
  291. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/DSSViewIntercom.Txt +0 -0
  292. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/EnergyStorage.dss +0 -0
  293. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/Generators.dss +0 -0
  294. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/LatLongCoords.dss +0 -0
  295. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/LineCodes.dss +0 -0
  296. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/LineGeometry.dss +0 -0
  297. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesGeometry.dss +0 -0
  298. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesLineCodes.dss +0 -0
  299. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/LoadXfmrCodes.dss +0 -0
  300. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/Loads_primary.dss +0 -0
  301. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/Master-unbal-initial-config.dss +0 -0
  302. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/Master.dss +0 -0
  303. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/PVSystems_primary.dss +0 -0
  304. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/PV_10pen_DSSPV.dss +0 -0
  305. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/PV_NN_100_DSSPV.dss +0 -0
  306. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/README.md +0 -0
  307. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/Regulators.dss +0 -0
  308. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/Transformers.dss +0 -0
  309. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/TriplexLineCodes.dss +0 -0
  310. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/TriplexLines.dss +0 -0
  311. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/UnbalancedLoads.dss +0 -0
  312. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/WireData.dss +0 -0
  313. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/bus_info_temp.json +0 -0
  314. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/desktop.ini +0 -0
  315. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.DSV +0 -0
  316. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.dbl +0 -0
  317. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/final9500node_Isolated.Txt +0 -0
  318. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/final9500node_Loops.Txt +0 -0
  319. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/final9500node_Power_elem_kVA.txt +0 -0
  320. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/final9500node_VLN_Node.Txt +0 -0
  321. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/ieee9500bal.dss +0 -0
  322. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/ieee9500unbal.dss +0 -0
  323. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/9500-primary-network/xfmrs_info_triplex_nodes.json +0 -0
  324. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/BusCoords.dat +0 -0
  325. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/CircuitPlottingScripts.dss +0 -0
  326. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/DSSGraph_Output.CSV +0 -0
  327. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/DSSViewIntercom.Txt +0 -0
  328. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/IEEE123Loads.DSS +0 -0
  329. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/IEEE123Master.dss +0 -0
  330. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/IEEE123Regulators.DSS +0 -0
  331. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/IEEELineCodes.DSS +0 -0
  332. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/P174_Run_SolarRamp.DSS +0 -0
  333. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/P174_Run_VoltageProfile.DSS +0 -0
  334. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/PV5sdata1.csv +0 -0
  335. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/PaperLoadShape.txt +0 -0
  336. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/RevRegTest.dss +0 -0
  337. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/Run_IEEE123Bus.DSS +0 -0
  338. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/Run_YearlySim.dss +0 -0
  339. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/SetDailyLoadShape.DSS +0 -0
  340. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/SolarRamp-Mack.DSS +0 -0
  341. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/SolarRamp.DSS +0 -0
  342. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/SolarRamp.csv +0 -0
  343. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/StorageRamp.CSV +0 -0
  344. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/WindRamp.DSS +0 -0
  345. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/WindRampRevRegTest.DSS +0 -0
  346. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Curr_Elem.Txt +0 -0
  347. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.DSV +0 -0
  348. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.dbl +0 -0
  349. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_BUSCOORDS.CSV +0 -0
  350. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_ElemPowers.CSV +0 -0
  351. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_LOADS.CSV +0 -0
  352. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_P_BYPHASE.CSV +0 -0
  353. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Elements.Txt +0 -0
  354. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_GenMeterOut.Txt +0 -0
  355. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.DSV +0 -0
  356. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.dbl +0 -0
  357. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Loops.Txt +0 -0
  358. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.DSV +0 -0
  359. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.dbl +0 -0
  360. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.DSV +0 -0
  361. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.dbl +0 -0
  362. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_elem_kVA.txt +0 -0
  363. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_seq_kVA.txt +0 -0
  364. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.DSV +0 -0
  365. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.dbl +0 -0
  366. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.DSV +0 -0
  367. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.dbl +0 -0
  368. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_RegTaps.Txt +0 -0
  369. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN.Txt +0 -0
  370. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN_Node.Txt +0 -0
  371. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.DSV +0 -0
  372. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.dbl +0 -0
  373. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.DSV +0 -0
  374. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.dbl +0 -0
  375. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.DSV +0 -0
  376. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.dbl +0 -0
  377. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/DSSViewIntercom.Txt +0 -0
  378. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/IEEE13Node_BusXY.csv +0 -0
  379. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt.dss +0 -0
  380. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_EXP_ElemPowers.CSV +0 -0
  381. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.DSV +0 -0
  382. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.dbl +0 -0
  383. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power_elem_kVA.txt +0 -0
  384. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/IEEELineCodes.dss +0 -0
  385. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/branch_data.csv +0 -0
  386. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/bus_data.csv +0 -0
  387. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/cap_data.csv +0 -0
  388. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/gen_data.csv +0 -0
  389. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/BalancedLoads.dss +0 -0
  390. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/BusCoords.dss +0 -0
  391. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/CableData.dss +0 -0
  392. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/CapControls.dss +0 -0
  393. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Capacitors.dss +0 -0
  394. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/DSSViewIntercom.Txt +0 -0
  395. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/EnergyStorage.dss +0 -0
  396. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Generators.dss +0 -0
  397. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/LatLongCoords.dss +0 -0
  398. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/LineCodes.dss +0 -0
  399. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/LineConstantsCode.DSS +0 -0
  400. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/LineGeometry.dss +0 -0
  401. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesGeometry.dss +0 -0
  402. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesLineCodes.dss +0 -0
  403. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/LoadXfmrCodes.dss +0 -0
  404. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Master-bal-initial-config.dss +0 -0
  405. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Master-unbal-initial-config.dss +0 -0
  406. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/PV_10pen_DSSPV.dss +0 -0
  407. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/PV_NN_100_DSSPV.dss +0 -0
  408. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/README.md +0 -0
  409. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Regulators.dss +0 -0
  410. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Elements.Txt +0 -0
  411. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Test9500new_LineConstants.txt +0 -0
  412. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Mon_mon1_1.csv +0 -0
  413. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.DSV +0 -0
  414. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.dbl +0 -0
  415. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power_elem_kVA.txt +0 -0
  416. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/Transformers.dss +0 -0
  417. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/TriplexLineCodes.dss +0 -0
  418. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/TriplexLines.dss +0 -0
  419. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/UnbalancedLoads.dss +0 -0
  420. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_dss/WireData.dss +0 -0
  421. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/BalancedLoads.dss +0 -0
  422. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/BusCoords.dss +0 -0
  423. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/CableData.dss +0 -0
  424. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/CapControls.dss +0 -0
  425. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Capacitors.dss +0 -0
  426. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/DSSViewIntercom.Txt +0 -0
  427. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/EnergyStorage.dss +0 -0
  428. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Generators.dss +0 -0
  429. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/LatLongCoords.dss +0 -0
  430. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/LineCodes.dss +0 -0
  431. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/LineConstantsCode.DSS +0 -0
  432. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/LineGeometry.dss +0 -0
  433. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesGeometry.dss +0 -0
  434. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesLineCodes.dss +0 -0
  435. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/LoadXfmrCodes.dss +0 -0
  436. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Master-bal-initial-config.dss +0 -0
  437. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Master-unbal-initial-config.dss +0 -0
  438. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/PV_10pen_DSSPV.dss +0 -0
  439. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/PV_NN_100_DSSPV.dss +0 -0
  440. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/README.md +0 -0
  441. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Regulators.dss +0 -0
  442. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Elements.Txt +0 -0
  443. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Test9500new_LineConstants.txt +0 -0
  444. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Mon_mon1_1.csv +0 -0
  445. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.DSV +0 -0
  446. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.dbl +0 -0
  447. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power_elem_kVA.txt +0 -0
  448. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/Transformers.dss +0 -0
  449. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/TriplexLineCodes.dss +0 -0
  450. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/TriplexLines.dss +0 -0
  451. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/UnbalancedLoads.dss +0 -0
  452. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/ieee9500_wye/WireData.dss +0 -0
  453. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/minimal_triplex/minimal_triplex.dss +0 -0
  454. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/rahul123/Line.txt +0 -0
  455. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/rahul123/Load.txt +0 -0
  456. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/rahul123/MyLineCodes.txt +0 -0
  457. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/rahul123/ieee123master_base.dss +0 -0
  458. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/Buscoords.dss +0 -0
  459. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/Intermediates.txt +0 -0
  460. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/LineCodes.dss +0 -0
  461. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/Lines.dss +0 -0
  462. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/LoadShapes.dss +0 -0
  463. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/Loads.dss +0 -0
  464. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/Master.dss +0 -0
  465. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/PVSystems.dss +0 -0
  466. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/SMART-DS_version.txt +0 -0
  467. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/Transformers.dss +0 -0
  468. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/Summary_data.csv +0 -0
  469. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/blown_fuses.csv +0 -0
  470. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/de-energized_nodes.csv +0 -0
  471. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_line_overloads.csv +0 -0
  472. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_over_voltages.csv +0 -0
  473. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_transformer_overloads.csv +0 -0
  474. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_under_voltages.csv +0 -0
  475. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_voltages.csv +0 -0
  476. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_histogram.png +0 -0
  477. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_percentiles.png +0 -0
  478. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_15_180.csv +0 -0
  479. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_15_225.csv +0 -0
  480. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_180.csv +0 -0
  481. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_225.csv +0 -0
  482. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_90.csv +0 -0
  483. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_35_135.csv +0 -0
  484. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_16017_pu.csv +0 -0
  485. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17146_pu.csv +0 -0
  486. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17950_pu.csv +0 -0
  487. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_1835_pu.csv +0 -0
  488. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19648_pu.csv +0 -0
  489. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19955_pu.csv +0 -0
  490. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_20964_pu.csv +0 -0
  491. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22499_pu.csv +0 -0
  492. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22635_pu.csv +0 -0
  493. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_2581_pu.csv +0 -0
  494. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29069_pu.csv +0 -0
  495. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29376_pu.csv +0 -0
  496. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29596_pu.csv +0 -0
  497. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31655_pu.csv +0 -0
  498. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31818_pu.csv +0 -0
  499. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_32244_pu.csv +0 -0
  500. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33164_pu.csv +0 -0
  501. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33792_pu.csv +0 -0
  502. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8445_pu.csv +0 -0
  503. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8470_pu.csv +0 -0
  504. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_16017_pu.csv +0 -0
  505. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17146_pu.csv +0 -0
  506. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17950_pu.csv +0 -0
  507. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_1835_pu.csv +0 -0
  508. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19648_pu.csv +0 -0
  509. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19955_pu.csv +0 -0
  510. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_20964_pu.csv +0 -0
  511. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22499_pu.csv +0 -0
  512. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22635_pu.csv +0 -0
  513. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_2581_pu.csv +0 -0
  514. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29069_pu.csv +0 -0
  515. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29376_pu.csv +0 -0
  516. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29596_pu.csv +0 -0
  517. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31655_pu.csv +0 -0
  518. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31818_pu.csv +0 -0
  519. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_32244_pu.csv +0 -0
  520. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33164_pu.csv +0 -0
  521. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33792_pu.csv +0 -0
  522. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8445_pu.csv +0 -0
  523. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8470_pu.csv +0 -0
  524. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_10747_pu.csv +0 -0
  525. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_1077_pu.csv +0 -0
  526. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_13334_pu.csv +0 -0
  527. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14588_pu.csv +0 -0
  528. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14705_pu.csv +0 -0
  529. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_3216_pu.csv +0 -0
  530. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_6157_pu.csv +0 -0
  531. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_7380_pu.csv +0 -0
  532. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kw_10747_pu.csv +0 -0
  533. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kw_1077_pu.csv +0 -0
  534. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kw_13334_pu.csv +0 -0
  535. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14588_pu.csv +0 -0
  536. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14705_pu.csv +0 -0
  537. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kw_3216_pu.csv +0 -0
  538. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kw_6157_pu.csv +0 -0
  539. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/profiles/res_kw_7380_pu.csv +0 -0
  540. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/sensors/reactive_ids.json +0 -0
  541. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/sensors/real_ids.json +0 -0
  542. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/smartds_small/sensors/voltage_ids.json +0 -0
  543. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/test_line/main.dss +0 -0
  544. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/test_line_unbal_line/main.dss +0 -0
  545. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/test_line_unbal_load/main.dss +0 -0
  546. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/test_line_unbal_load_unbal_line/main.dss +0 -0
  547. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/test_reg/main.dss +0 -0
  548. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/triplex_3ph/triplex_3ph.dss +0 -0
  549. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cases/dss/triplex_pv/triplex_pv.dss +0 -0
  550. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/__init__.py +0 -0
  551. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/cim_to_csv_converter.py +0 -0
  552. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/processors/__init__.py +0 -0
  553. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/processors/base_processor.py +0 -0
  554. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/processors/bus_processor.py +0 -0
  555. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/processors/capacitor_processor.py +0 -0
  556. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/processors/generator_processor.py +0 -0
  557. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/processors/line_processor.py +0 -0
  558. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/processors/regulator_processor.py +0 -0
  559. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/processors/switch_processor.py +0 -0
  560. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/processors/transformer_processor.py +0 -0
  561. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/utils/__init__.py +0 -0
  562. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/utils/phase_utils.py +0 -0
  563. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/validators/__init__.py +0 -0
  564. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/cim_importer/validators/topology_validator.py +0 -0
  565. {distopf-1.1.0.dev2/src/distopf/matrix_models/matrix_bess/spatial_decomposition → distopf-1.1.0.dev3/src/distopf/distributed/spatial}/__init__.py +0 -0
  566. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/dss_importer/__init__.py +0 -0
  567. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/__init__.py +0 -0
  568. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/binary_variable_notes.md +0 -0
  569. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/lindist.py +0 -0
  570. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/lindist_capacitor_mi.py +0 -0
  571. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/lindist_capacitor_regulator_mi.py +0 -0
  572. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/lindist_loads.py +0 -0
  573. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/lindist_p_gen.py +0 -0
  574. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/lindist_q_gen.py +0 -0
  575. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/lindist_regulator_mi.py +0 -0
  576. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/__init__.py +0 -0
  577. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/lindist_capacitor_mi_mp.py +0 -0
  578. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/lindist_loads_mp.py +0 -0
  579. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/lindist_mp.py +0 -0
  580. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/pyomo_solver.py +0 -0
  581. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/readme.md +0 -0
  582. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/matrix_bess/solvers.py +0 -0
  583. {distopf-1.1.0.dev2/src/distopf → distopf-1.1.0.dev3/src/distopf/matrix_models/matrix_bess}/spatial_decomposition/__init__.py +0 -0
  584. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/objectives.py +0 -0
  585. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/matrix_models/solvers.py +0 -0
  586. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/factories.py +0 -0
  587. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/nl_branchflow_prebuilt.py +0 -0
  588. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/pyomo_models/protocol.py +0 -0
  589. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/utils/__init__.py +0 -0
  590. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/utils/input_handlers.py +0 -0
  591. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/utils/ngon.py +0 -0
  592. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/utils/query_interface.py +0 -0
  593. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/utils/results_comparison.py +0 -0
  594. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/wrappers/__init__.py +0 -0
  595. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/src/distopf/wrappers/base.py +0 -0
  596. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/__init__.py +0 -0
  597. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/conftest.py +0 -0
  598. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/data/IEEE13.xml +0 -0
  599. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/data/ieee13/branch_data.csv +0 -0
  600. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/data/ieee13/bus_data.csv +0 -0
  601. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/data/ieee13/cap_data.csv +0 -0
  602. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/data/ieee13/gen_data.csv +0 -0
  603. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/data/ieee13/reg_data.csv +0 -0
  604. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/integration/__init__.py +0 -0
  605. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/integration/test_full_conversion.py +0 -0
  606. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/integration/test_impedance_comparison.py +0 -0
  607. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/__init__.py +0 -0
  608. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/test_cim_to_csv_helpser.py +0 -0
  609. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/test_cim_to_csv_linking.py +0 -0
  610. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/test_converter_run.py +0 -0
  611. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/test_phase_utils.py +0 -0
  612. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/test_processors.py +0 -0
  613. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/test_reg_transformer_small.py +0 -0
  614. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/test_regulator_impedances.py +0 -0
  615. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/test_topology_validator.py +0 -0
  616. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/cim_converter/unit/test_transformer_tank_impedances.py +0 -0
  617. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/dss_converter/__init__.py +0 -0
  618. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/dss_converter/integration/__init__.py +0 -0
  619. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/dss_converter/integration/test_dss_converter_integration.py +0 -0
  620. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/dss_converter/integration/test_triplex_lindist.py +0 -0
  621. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/dss_converter/unit/__init__.py +0 -0
  622. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/dss_converter/unit/test_dss_converter.py +0 -0
  623. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/dss_converter/unit/test_transformer.py +0 -0
  624. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/dss_converter/unit/test_triplex_converter.py +0 -0
  625. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/integration_references.json +0 -0
  626. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/pyomo_models/test_pyomo_lindist.py +0 -0
  627. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/test_backends.py +0 -0
  628. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/test_exports.py +0 -0
  629. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/test_integration_snapshots.py +0 -0
  630. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/test_matrix_models.py +0 -0
  631. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/test_smoke.py +0 -0
  632. {distopf-1.1.0.dev2 → distopf-1.1.0.dev3}/tests/test_utilities.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: distopf
3
- Version: 1.1.0.dev2
3
+ Version: 1.1.0.dev3
4
4
  Summary: A package for solving unbalanced three-phase distribution system optimal power flow problems.
5
5
  Author: Abodh Poudyal
6
6
  Author-email: Nathan Gray <nathan.gray@pnnl.gov>, Rabayet Sadnan <rabayet.sadnan@pnnl.gov>
@@ -104,6 +104,45 @@ result = case.run_opf(objective="curtail_min", control_variable="P", v_max=1.05,
104
104
  result.plot_network().show(renderer="browser")
105
105
  ```
106
106
 
107
+ ## Spatial ENAPP and ADMM solvers
108
+
109
+ The spatial solvers are available through the public [`Case.run_enapp()`](src/distopf/api.py:577) and [`Case.run_admm()`](src/distopf/api.py:617) methods. Supply an area topology as a JSON-safe dictionary keyed by area name. Each area must define `up_areas`, `down_areas`, and exactly one `up_buses` entry; bus names must match the selected case.
110
+
111
+ ```python
112
+ area_info = {
113
+ "area1": {
114
+ "up_areas": [],
115
+ "down_areas": ["area2"],
116
+ "up_buses": ["sourcebus"],
117
+ "down_buses": ["632"],
118
+ },
119
+ "area2": {
120
+ "up_areas": ["area1"],
121
+ "down_areas": [],
122
+ "up_buses": ["632"],
123
+ "down_buses": [],
124
+ },
125
+ }
126
+ case = opf.create_case(opf.CASES_DIR / "csv" / "ieee13")
127
+ result = case.run_enapp(
128
+ area_info=area_info,
129
+ objective="substation_power",
130
+ parallel=False,
131
+ max_iterations=25,
132
+ )
133
+ ```
134
+
135
+ Runs made through these methods are recorded by [`record_call()`](src/distopf/utils/call_recorder.py:90). Calling [`PowerFlowResult.save()`](src/distopf/results.py:209) writes `run_config.json`, including the distributed solver and topology, so named-objective runs can be reproduced with [`replay()`](src/distopf/api.py:1140):
136
+
137
+ ```python
138
+ result.save("results/ieee13-enapp")
139
+ replayed = opf.replay("results/ieee13-enapp/run_config.json")
140
+ ```
141
+
142
+ Custom objective callables and solve/iteration callbacks are intentionally marked non-replayable because they cannot be reconstructed from JSON.
143
+
144
+
145
+
107
146
  ## Optimization Wrappers
108
147
 
109
148
  DistOPF supports multiple optimization wrappers for solving OPF problems:
@@ -80,6 +80,45 @@ result = case.run_opf(objective="curtail_min", control_variable="P", v_max=1.05,
80
80
  result.plot_network().show(renderer="browser")
81
81
  ```
82
82
 
83
+ ## Spatial ENAPP and ADMM solvers
84
+
85
+ The spatial solvers are available through the public [`Case.run_enapp()`](src/distopf/api.py:577) and [`Case.run_admm()`](src/distopf/api.py:617) methods. Supply an area topology as a JSON-safe dictionary keyed by area name. Each area must define `up_areas`, `down_areas`, and exactly one `up_buses` entry; bus names must match the selected case.
86
+
87
+ ```python
88
+ area_info = {
89
+ "area1": {
90
+ "up_areas": [],
91
+ "down_areas": ["area2"],
92
+ "up_buses": ["sourcebus"],
93
+ "down_buses": ["632"],
94
+ },
95
+ "area2": {
96
+ "up_areas": ["area1"],
97
+ "down_areas": [],
98
+ "up_buses": ["632"],
99
+ "down_buses": [],
100
+ },
101
+ }
102
+ case = opf.create_case(opf.CASES_DIR / "csv" / "ieee13")
103
+ result = case.run_enapp(
104
+ area_info=area_info,
105
+ objective="substation_power",
106
+ parallel=False,
107
+ max_iterations=25,
108
+ )
109
+ ```
110
+
111
+ Runs made through these methods are recorded by [`record_call()`](src/distopf/utils/call_recorder.py:90). Calling [`PowerFlowResult.save()`](src/distopf/results.py:209) writes `run_config.json`, including the distributed solver and topology, so named-objective runs can be reproduced with [`replay()`](src/distopf/api.py:1140):
112
+
113
+ ```python
114
+ result.save("results/ieee13-enapp")
115
+ replayed = opf.replay("results/ieee13-enapp/run_config.json")
116
+ ```
117
+
118
+ Custom objective callables and solve/iteration callbacks are intentionally marked non-replayable because they cannot be reconstructed from JSON.
119
+
120
+
121
+
83
122
  ## Optimization Wrappers
84
123
 
85
124
  DistOPF supports multiple optimization wrappers for solving OPF problems:
@@ -0,0 +1,249 @@
1
+ """
2
+ Temporal Decomposition Examples README
3
+
4
+ This directory contains examples demonstrating the use of TENAPP (Temporal
5
+ Alternating/Approximate/ADMM-based Multi-period OPF) algorithms for solving
6
+ multi-period optimal power flow problems using temporal decomposition.
7
+
8
+ ## Background
9
+
10
+ Temporal decomposition breaks a large multi-period OPF problem into smaller
11
+ per-time-step subproblems, which are solved iteratively while coordinating
12
+ through battery state-of-charge (SOC) constraints. This approach is useful for:
13
+
14
+ - Large time horizons (many hours/days)
15
+ - Limited computational resources
16
+ - Distributed optimization
17
+ - Privacy-preserving solutions
18
+
19
+ ## Files
20
+
21
+ ### 1. run_temporal_quick.py
22
+ **Simplest example - 6 lines of solving code**
23
+
24
+ - Loads IEEE 123-bus network with 6-hour horizon
25
+ - Sets realistic energy prices
26
+ - Solves with TENAPP-1O algorithm
27
+ - Prints results
28
+
29
+ **Run with:**
30
+ ```bash
31
+ uv run examples/advanced/run_temporal_quick.py
32
+ ```
33
+
34
+ **Use when:** You just want to get started quickly
35
+
36
+ ### 2. run_temporal_tenapp.py
37
+ **Comprehensive example - All three algorithms in detail**
38
+
39
+ - Loads multi-period case (4 time steps)
40
+ - Configures battery parameters
41
+ - Runs all three algorithms:
42
+ - TENAPP-1O (first-order method)
43
+ - TENAPP-APRX (approximate dual method)
44
+ - TENAPP-ADMM (ADMM-based method)
45
+ - Generates detailed comparison CSV
46
+ - Extracts and displays battery dispatch
47
+ - Shows convergence iteration histories
48
+
49
+ **Run with:**
50
+ ```bash
51
+ uv run examples/advanced/run_temporal_tenapp.py
52
+ ```
53
+
54
+ **Output files:**
55
+ - `scratch/temporal_results/temporal_results_summary.csv` - Algorithm comparison
56
+ - `scratch/temporal_results/tenapp_*o_iterations.csv` - Iteration details per algorithm
57
+ - `scratch/temporal_results/*.csv` - Full results
58
+
59
+ **Use when:** You want to understand algorithm behavior and compare performance
60
+
61
+ ### 3. run_temporal_comparison.py
62
+ **Advanced example - Flexible comparison framework**
63
+
64
+ - Creates configurable multi-period cases
65
+ - Sets dynamic pricing signals with peak hours
66
+ - Runs comparison with custom parameters
67
+ - Generates detailed analysis:
68
+ - Cost breakdown
69
+ - Convergence metrics
70
+ - Battery scheduling
71
+ - Iteration timings
72
+ - Saves all results to CSV for further analysis
73
+
74
+ **Run with:**
75
+ ```bash
76
+ uv run examples/advanced/run_temporal_comparison.py
77
+ ```
78
+
79
+ **Key features:**
80
+ - Modular functions for reuse
81
+ - Configurable number of time steps
82
+ - Dynamic pricing scenarios
83
+ - Comprehensive spreadsheet outputs
84
+
85
+ **Use when:** You want to run parameter studies and custom scenarios
86
+
87
+ ## Core Algorithms
88
+
89
+ ### TENAPP-1O (First-Order)
90
+ ```python
91
+ from distopf.distributed.temporal import solve_tenapp_1o
92
+ result = solve_tenapp_1o(case, objective=energy_cost_min, max_iterations=20)
93
+ ```
94
+
95
+ **Pros:**
96
+ - Simple dual-based coordination
97
+ - Direct interpretation of price signals
98
+ - Good for reactive dispatch
99
+
100
+ **Cons:**
101
+ - May need many iterations
102
+ - Sensitive to convergence tolerance
103
+
104
+ ### TENAPP-APRX (Approximate Dual)
105
+ ```python
106
+ from distopf.distributed.temporal import solve_tenapp_aprx
107
+ result = solve_tenapp_aprx(case, objective=energy_cost_min, alpha2=0.33, alpha3=0.33)
108
+ ```
109
+
110
+ **Pros:**
111
+ - Gradient-based dual estimates
112
+ - Good practical performance
113
+ - Tunable approximation accuracy
114
+
115
+ **Cons:**
116
+ - Hyperparameters (alpha2, alpha3) may need tuning
117
+ - Approximation may not be exact
118
+
119
+ ### TENAPP-ADMM (ADMM-based)
120
+ ```python
121
+ from distopf.distributed.temporal import solve_tenapp_admm
122
+ result = solve_tenapp_admm(case, objective=energy_cost_min, weight=1e2)
123
+ ```
124
+
125
+ **Pros:**
126
+ - Provable convergence under certain conditions
127
+ - Natural dual variable updates
128
+ - Adaptable penalty weights
129
+
130
+ **Cons:**
131
+ - Requires careful weight selection
132
+ - More computationally intensive per iteration
133
+
134
+ ## Common Output Fields
135
+
136
+ All algorithms return a dictionary with:
137
+
138
+ ```python
139
+ result = {
140
+ "models": [list of LinDistMPL per-time-step models],
141
+ "results": [list of OptimizeResult per time step],
142
+ "iterations": int, # Iterations to convergence
143
+ "converged": bool, # Whether algorithm converged
144
+ "total_cost": float, # Sum of per-time-step costs ($)
145
+ "solve_time": float, # Total solve time (seconds)
146
+ "iteration_summaries": pd.DataFrame, # Iteration-by-iteration details
147
+ }
148
+ ```
149
+
150
+ ## Common Parameters
151
+
152
+ ```python
153
+ solve_tenapp_*(
154
+ case, # distopf.Case object (n_steps > 1)
155
+ objective=energy_cost_min, # Objective function
156
+ max_iterations=100, # Max coordination iterations
157
+ tolerance=1e-3, # Convergence tolerance
158
+ parallel=False, # Parallel per-time-step solves
159
+ cost_curve=np.array([...]), # Hourly electricity prices ($/MWh)
160
+ solver="CLARABEL", # CVXPY solver (CLARABEL, SCS, MOSEK, etc.)
161
+ )
162
+ ```
163
+
164
+ ## Setting Up a Case
165
+
166
+ ```python
167
+ import distopf as opf
168
+ import numpy as np
169
+
170
+ # Create multi-period case
171
+ case = opf.create_case(
172
+ opf.CASES_DIR / "csv" / "ieee123_30der_bat",
173
+ n_steps=6, # 6-hour horizon
174
+ start_step=0,
175
+ )
176
+
177
+ # Configure voltage limits
178
+ case.bus_data.v_max = 1.05
179
+ case.bus_data.v_min = 0.95
180
+
181
+ # Configure generator control mode
182
+ case.gen_data.control_variable = "PQ" # Active and reactive power
183
+
184
+ # Configure battery parameters
185
+ case.bat_data.control_variable = "P" # Active power control only
186
+ case.bat_data["start_soc"] = 0.5 # 50% initial SOC
187
+ case.bat_data["max_soc"] = 0.9 # 90% max SOC
188
+
189
+ # Define hourly electricity costs
190
+ cost_curve = np.array([50, 50, 80, 90, 70, 45]) # $/MWh for each hour
191
+ ```
192
+
193
+ ## Analyzing Results
194
+
195
+ ```python
196
+ # Check convergence
197
+ if result["converged"]:
198
+ print(f"Solved in {result['iterations']} iterations")
199
+ print(f"Total cost: ${result['total_cost']:.2f}")
200
+ else:
201
+ print(f"Did not converge after {result['iterations']} iterations")
202
+
203
+ # View iteration history
204
+ print(result["iteration_summaries"])
205
+
206
+ # Extract battery dispatch from first time step
207
+ model_t0 = result["models"][0]
208
+ optim_result_t0 = result["results"][0]
209
+ p_batt = model_t0.get_p_batt(optim_result_t0.x)
210
+ soc = model_t0.get_soc(optim_result_t0.x)
211
+ ```
212
+
213
+ ## Performance Tips
214
+
215
+ 1. **Start small**: Begin with short horizons (4-6 hours) before scaling up
216
+ 2. **Set tolerances carefully**: Looser tolerance (1e-2) = faster, stricter (1e-5) = more accurate
217
+ 3. **Choose algorithm wisely**:
218
+ - 1O for first quick solve
219
+ - APRX for practical implementations
220
+ - ADMM for convergence guarantees
221
+ 4. **Adjust weights**: ADMM weight scaling affects convergence speed
222
+ 5. **Use realistic pricing**: Include peak hours and time-of-use rates
223
+ 6. **Monitor iterations**: Check if converging monotonically or oscillating
224
+
225
+ ## Troubleshooting
226
+
227
+ **Algorithm doesn't converge:**
228
+ - Increase `max_iterations`
229
+ - Loosen `tolerance` (use 1e-2 instead of 1e-4)
230
+ - Check if case is feasible with `opf.run_opf(case, objective="loss_min")`
231
+
232
+ **Very slow iterations:**
233
+ - Disable solver verbosity in CVXPY
234
+ - Use `parallel=True` if multi-core available
235
+ - Try different solver (SCS faster on some problems, MOSEK more robust)
236
+
237
+ **Inconsistent results:**
238
+ - Check battery efficiency settings
239
+ - Verify cost curve values are reasonable
240
+ - Ensure schedules/loads are properly formatted
241
+
242
+ ## References
243
+
244
+ For detailed algorithm descriptions, see parent documentation in:
245
+ - `distopf.distributed.temporal.solve_tenapp_1o`
246
+ - `distopf.distributed.temporal.solve_tenapp_aprx`
247
+ - `distopf.distributed.temporal.solve_tenapp_admm`
248
+
249
+ """
@@ -0,0 +1,87 @@
1
+ from pathlib import Path
2
+
3
+ import pandas as pd
4
+
5
+ import distopf as opf
6
+ from distopf.distributed.spatial.decompose import decompose
7
+ from distopf.distributed.spatial.enapp import solve_enapp
8
+
9
+ AREA_INFO = {
10
+ "area1": {
11
+ "up_areas": [],
12
+ "down_areas": ["area2", "area3"],
13
+ "up_buses": ["150"],
14
+ "down_buses": ["152", "135"],
15
+ },
16
+ "area2": {
17
+ "up_areas": ["area1"],
18
+ "down_areas": ["area4"],
19
+ "up_buses": ["152"],
20
+ "down_buses": ["160"],
21
+ },
22
+ "area3": {
23
+ "up_areas": ["area1"],
24
+ "down_areas": [],
25
+ "up_buses": ["135"],
26
+ "down_buses": [],
27
+ },
28
+ # Assumption: area4 is a leaf area under area2.
29
+ "area4": {
30
+ "up_areas": ["area2"],
31
+ "down_areas": [],
32
+ "up_buses": ["160"],
33
+ "down_buses": [],
34
+ },
35
+ }
36
+
37
+ OUTPUT_DIR = Path("scratch/enapp_123_debug")
38
+ PHASES = ("a", "b", "c")
39
+
40
+
41
+ def _voltage_row(result, bus_name: str) -> pd.Series:
42
+ row = result.voltages.loc[
43
+ result.voltages.name.astype(str) == str(bus_name), ["name", "t", "a", "b", "c"]
44
+ ]
45
+ if row.empty:
46
+ raise ValueError(f"Missing voltage row for bus {bus_name}")
47
+ return row.iloc[0]
48
+
49
+
50
+ def _power_row(result, to_bus: str) -> pd.Series:
51
+ flows = result.active_power_flows.merge(
52
+ result.reactive_power_flows,
53
+ on=["fb", "tb", "from_name", "to_name", "t"],
54
+ suffixes=("_p", "_q"),
55
+ )
56
+ row = flows.loc[flows.to_name.astype(str) == str(to_bus)]
57
+ if row.empty:
58
+ raise ValueError(f"Missing power-flow row for boundary bus {to_bus}")
59
+ return row.iloc[0]
60
+
61
+
62
+ def _write_table(df: pd.DataFrame, file_name: str) -> None:
63
+ df.to_csv(OUTPUT_DIR / file_name, index=False)
64
+
65
+
66
+ def main() -> None:
67
+ case = opf.create_case(
68
+ opf.CASES_DIR / "csv" / "ieee123_30der",
69
+ n_steps=1,
70
+ ignore_schedule=True,
71
+ ignore_gen=True,
72
+ ignore_bat=True,
73
+ )
74
+ case.modify(control_variable="", v_max=1.06)
75
+ central = case.run_opf()
76
+
77
+ sources = {area_name: data["up_buses"][0] for area_name, data in AREA_INFO.items()}
78
+ subcases = decompose(case, sources)
79
+ r4 = subcases["area4"].run_opf()
80
+
81
+ result_enapp = solve_enapp(
82
+ case, AREA_INFO, objective="min_loss", tol=1e-3, parallel=False
83
+ )
84
+
85
+
86
+ if __name__ == "__main__":
87
+ main()
@@ -1,17 +1,10 @@
1
- import multiprocessing as mp
2
- from copy import deepcopy
3
- from pathlib import Path
4
- import numpy as np
5
- import pandas as pd
6
1
  import distopf as opf
7
- from distopf.matrix_models.matrix_bess.solvers import cvxpy_solve
8
- from distopf.matrix_models.matrix_bess.lindist_loads_mp import LinDistMPL
9
2
  from distopf.matrix_models.matrix_bess.lindist_mp import LinDistMP
10
3
  from distopf.matrix_models.matrix_bess.objectives import cp_obj_cost_min
11
- from distopf.matrix_models.matrix_bess.spatial_decomposition.enapp import solve_enapp
4
+
5
+ from distopf.distributed.spatial.enapp import solve_enapp
12
6
  from distopf.api import create_case
13
7
  from distopf import CASES_DIR
14
- import plotly.express as px
15
8
  import cvxpy as cp
16
9
 
17
10
 
@@ -30,7 +23,7 @@ def main():
30
23
  m = LinDistMP(case=case)
31
24
  m.build()
32
25
  # plot_network(m).show()
33
- area_info_ = {
26
+ area_info = {
34
27
  "area1": {
35
28
  "up_areas": [],
36
29
  "down_areas": ["area2", "area3"],
@@ -51,41 +44,36 @@ def main():
51
44
  },
52
45
  }
53
46
 
54
- # area_models = decompose(m, sources)
55
- result_c = cvxpy_solve(
56
- m,
57
- cp_obj_cost_min,
47
+ result_c = case.run_opf(
48
+ objective=cp_obj_cost_min,
58
49
  solver=cp.CLARABEL,
59
50
  demand_charge=demand_charge,
60
51
  cost_curve=case.schedules.price.to_numpy(),
52
+ formulation="lindist_mp",
61
53
  )
62
- print(result_c.fun, " in ", result_c.runtime)
54
+ print(result_c.objective_value, " in ", result_c.solve_time)
63
55
  result_enapp = solve_enapp(
64
- m,
65
- area_info_,
56
+ case,
57
+ area_info,
66
58
  tol=1e-6,
67
59
  solver=cp.CLARABEL,
68
60
  objective=cp_obj_cost_min,
69
61
  demand_charge=demand_charge,
70
62
  cost_curve=case.schedules.price.to_numpy(),
63
+ formulation="lindist_mp",
71
64
  )
72
- print(result_enapp.fun)
73
-
74
- def at_time(df: pd.DataFrame, t):
75
- names = [name for name in df.columns if name != "t"]
76
- _df = deepcopy(df.loc[df.t == t, names])
77
- return _df
65
+ print(result_enapp.objective_value)
78
66
 
79
- v_d = m.get_voltages(result_enapp.x)
80
- v_c = m.get_voltages(result_c.x)
81
- print(m.get_q_gens(result_enapp.x))
82
- print(m.get_q_gens(result_c.x))
67
+ v_d = result_enapp.voltages
68
+ v_c = result_c.voltages
69
+ print(result_enapp.q_gens)
70
+ print(result_c.q_gens)
83
71
 
84
72
  opf.compare_voltages(v_c, v_d, t=12).show(renderer="browser")
85
73
  opf.compare_voltages(v_c, v_d, t=13).show(renderer="browser")
86
74
  # np.savetxt("copf33x.csv", result_c.x)
87
75
  # np.savetxt("dopf33x.csv", result_enapp.x)
88
- px.scatter(result_c.x - result_enapp.x).show(renderer="browser")
76
+ # px.scatter(result_c.x - result_enapp.x).show(renderer="browser")
89
77
  print()
90
78
 
91
79
 
@@ -0,0 +1,111 @@
1
+ from pathlib import Path
2
+ import distopf as opf
3
+ from distopf.pyomo_models.objectives import (
4
+ loss_objective_rule,
5
+ )
6
+
7
+ from distopf.distributed.spatial.enapp import Case, solve_enapp, PowerFlowResult
8
+
9
+ OUTPUT_DIR = Path("scratch/enapp_123_debug")
10
+ PHASES = ("a", "b", "c")
11
+
12
+
13
+ def main() -> None:
14
+ OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
15
+
16
+ case = opf.create_case(
17
+ opf.CASES_DIR / "csv" / "ieee123_30der_bat",
18
+ n_steps=24,
19
+ start_step=0,
20
+ ignore_bat=True,
21
+ # ignore_gen=True,
22
+ # ignore_schedule=True,
23
+ )
24
+ demand_charge = 0 # $/p.u. power
25
+ # case.bus_data.v_max = 2
26
+ # case.bus_data.v_min = 0
27
+ case.gen_data.control_variable = "Q"
28
+ case.bat_data.control_variable = "P"
29
+ # case.reg_data.loc[case.reg_data.tb == 127, ["tap_a", "tap_b", "tap_c"]] = [0.0, 0.0, 0.0]
30
+ # case.reg_data.loc[case.reg_data.tb == 127, ["ratio_a", "ratio_b", "ratio_c"]] = [1.0, 1.0, 1.0]
31
+
32
+ area_info = {
33
+ "area1": {
34
+ "up_areas": [],
35
+ "down_areas": ["area2", "area3"],
36
+ "up_buses": ["150"],
37
+ "down_buses": ["152", "135"],
38
+ },
39
+ "area2": {
40
+ "up_areas": ["area1"],
41
+ "down_areas": ["area4"],
42
+ "up_buses": ["152"],
43
+ "down_buses": ["160"],
44
+ },
45
+ "area3": {
46
+ "up_areas": ["area1"],
47
+ "down_areas": [],
48
+ "up_buses": ["135"],
49
+ "down_buses": [],
50
+ },
51
+ "area4": {
52
+ "up_areas": ["area2"],
53
+ "down_areas": [],
54
+ "up_buses": ["160"],
55
+ "down_buses": [],
56
+ },
57
+ }
58
+
59
+ result_c = case.run_opf(
60
+ objective=loss_objective_rule,
61
+ # demand_charge=demand_charge,
62
+ # cost_curve=case.schedules.price.to_numpy(),
63
+ formulation="lindist",
64
+ wrapper="pyomo",
65
+ solver="ipopt",
66
+ )
67
+ print(result_c.objective_value, " in ", result_c.solve_time)
68
+ # result_c.plot_network().show(renderer="browser")
69
+
70
+ def iteration_callback(
71
+ it, cases: dict[str, Case], all_results: dict[str, PowerFlowResult], boundaries
72
+ ) -> None:
73
+ print("ENAPP iteration ", it)
74
+ # for area_name, boundary_vars in boundaries.items():
75
+ # print(area_name)
76
+ # print(f"objective value: {all_results[area_name].objective_value}")
77
+ # print(f"{area_name} s_up")
78
+ # print(boundary_vars.s_up)
79
+ # print(f"{area_name} v_down")
80
+ # print(boundary_vars.v_down)
81
+ # all_results[area_name].plot_network().show(renderer="browser")
82
+ # print()
83
+
84
+ result_enapp = solve_enapp(
85
+ case,
86
+ area_info,
87
+ tol=1e-6,
88
+ objective=loss_objective_rule,
89
+ # objective="min_loss",
90
+ wrapper="pyomo",
91
+ formulation="lindist",
92
+ iteration_callback=iteration_callback,
93
+ solver="ipopt",
94
+ )
95
+ print(result_enapp.objective_value)
96
+
97
+ v_d = result_enapp.voltages
98
+ v_c = result_c.voltages
99
+ p_gens_c = result_c.p_gens
100
+ p_gens_enapp = result_enapp.p_gens
101
+ opf.compare_voltages(p_gens_c, p_gens_enapp).show(renderer="browser")
102
+ # print(result_enapp.q_gens)
103
+ # print(result_c.q_gens)
104
+ # print(v_c)
105
+ # print(v_d)
106
+ opf.compare_voltages(v_c, v_d).show(renderer="browser")
107
+ print()
108
+
109
+
110
+ if __name__ == "__main__":
111
+ main()