distopf 1.1.0.dev2__tar.gz → 1.1.0.dev4__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.dev4}/PKG-INFO +66 -4
  2. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/README.md +64 -2
  3. distopf-1.1.0.dev4/examples/advanced/TEMPORAL_README.md +249 -0
  4. distopf-1.1.0.dev4/examples/advanced/debug_enapp_123.py +87 -0
  5. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/advanced/run_enapp.py +16 -28
  6. distopf-1.1.0.dev4/examples/advanced/run_enapp_123.py +111 -0
  7. distopf-1.1.0.dev4/examples/advanced/run_enapp_123_isolated.py +110 -0
  8. distopf-1.1.0.dev4/examples/advanced/run_enapp_123_spatiotemporal.py +102 -0
  9. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/advanced/run_enapp_refactor.py +9 -18
  10. distopf-1.1.0.dev4/examples/advanced/run_enapp_tenapp.py +263 -0
  11. distopf-1.1.0.dev4/examples/advanced/run_temporal_comparison.py +241 -0
  12. distopf-1.1.0.dev4/examples/advanced/run_temporal_quick.py +41 -0
  13. distopf-1.1.0.dev4/examples/advanced/run_temporal_tenapp.py +236 -0
  14. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/control_devices/test_regulator_mi.py +3 -4
  15. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/notebooks/adding_generators.ipynb +126 -126
  16. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/notebooks/adding_generators.py +0 -1
  17. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/notebooks/basic_power_flow_examples.ipynb +363 -363
  18. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/notebooks/build_your_own_opf.ipynb +27 -26
  19. distopf-1.1.0.dev4/examples/notebooks/distopf_pesgm2026_tutorial.ipynb +37674 -0
  20. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/optimization/penalties.py +0 -1
  21. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/optimization/thermal_limits.py +0 -2
  22. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_multiperiod.py +2 -2
  23. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_nlp_123_comparison.py +0 -1
  24. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_nlp_13_comparison.py +0 -1
  25. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_regulator_control.py +0 -1
  26. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_time_comparison.py +2 -2
  27. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/pyproject.toml +1 -1
  28. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/api.py +204 -15
  29. distopf-1.1.0.dev4/src/distopf/distributed/__init__.py +5 -0
  30. distopf-1.1.0.dev4/src/distopf/distributed/spatial/ADMM_MATH_REPORT.md +800 -0
  31. distopf-1.1.0.dev4/src/distopf/distributed/spatial/ENAPP_MATH_REPORT.md +605 -0
  32. distopf-1.1.0.dev4/src/distopf/distributed/spatial/admm_agents.py +770 -0
  33. distopf-1.1.0.dev4/src/distopf/distributed/spatial/boundary.py +198 -0
  34. {distopf-1.1.0.dev2/src/distopf/spatial_decomposition → distopf-1.1.0.dev4/src/distopf/distributed/spatial}/decompose.py +67 -17
  35. distopf-1.1.0.dev4/src/distopf/distributed/spatial/enapp copy.py +1111 -0
  36. distopf-1.1.0.dev4/src/distopf/distributed/spatial/enapp_agents.py +441 -0
  37. distopf-1.1.0.dev4/src/distopf/distributed/spatial/execution.py +612 -0
  38. distopf-1.1.0.dev4/src/distopf/distributed/spatial/messaging.py +223 -0
  39. distopf-1.1.0.dev4/src/distopf/distributed/spatial/penalties.py +31 -0
  40. distopf-1.1.0.dev4/src/distopf/distributed/spatial/schedule.py +72 -0
  41. distopf-1.1.0.dev4/src/distopf/distributed/temporal/__init__.py +44 -0
  42. distopf-1.1.0.dev4/src/distopf/distributed/temporal/objectives.py +250 -0
  43. distopf-1.1.0.dev4/src/distopf/distributed/temporal/tenapp_1o.py +150 -0
  44. distopf-1.1.0.dev4/src/distopf/distributed/temporal/tenapp_admm.py +173 -0
  45. distopf-1.1.0.dev4/src/distopf/distributed/temporal/tenapp_aprx.py +149 -0
  46. distopf-1.1.0.dev4/src/distopf/distributed/temporal/utils.py +215 -0
  47. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/dss_importer/dss_to_csv_converter.py +5 -10
  48. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/fbs.py +16 -10
  49. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/base.py +5 -4
  50. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/base_mp.py +5 -4
  51. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/objectives.py +1 -1
  52. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/decompose.py +7 -11
  53. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/enapp.py +2 -2
  54. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/plot.py +130 -72
  55. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/__init__.py +6 -0
  56. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/constraints.py +146 -2
  57. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/constraints_nlp.py +69 -14
  58. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/lindist.py +62 -8
  59. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/nl_branchflow.py +21 -8
  60. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/objectives.py +256 -0
  61. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/results.py +45 -0
  62. distopf-1.1.0.dev4/src/distopf/pyomo_models/slack_constraints.py +163 -0
  63. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/solvers.py +10 -1
  64. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/results.py +54 -9
  65. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/call_recorder.py +3 -1
  66. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/kcl_check.py +1 -1
  67. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/validators.py +2 -1
  68. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/matrix_bess_wrapper.py +4 -1
  69. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/matrix_wrapper.py +5 -2
  70. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/pyomo_wrapper.py +140 -43
  71. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_triplex_pv.py +1 -1
  72. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/pyomo_models/test_dual_extraction.py +0 -2
  73. distopf-1.1.0.dev4/tests/test_admm_agents.py +254 -0
  74. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_case.py +1 -4
  75. distopf-1.1.0.dev4/tests/test_distributed_api.py +119 -0
  76. distopf-1.1.0.dev4/tests/test_enapp_integration.py +276 -0
  77. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_nlp_backend.py +105 -4
  78. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_results.py +30 -0
  79. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/uv.lock +36 -36
  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.dev4}/.github/copilot-instructions.md +0 -0
  83. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/.github/skills/run-opf/SKILL.md +0 -0
  84. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/.github/workflows/lint.yml +0 -0
  85. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/.github/workflows/pypi-publish.yml +0 -0
  86. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/.gitignore +0 -0
  87. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/2026-04-21-distopf_2-triplex-agent.md +0 -0
  88. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/DISCLAIMER.md +0 -0
  89. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/LICENSE.md +0 -0
  90. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/column_migration.md +0 -0
  91. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/docs/STYLE_GUIDE.md +0 -0
  92. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/docs/architecture.puml +0 -0
  93. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/README.md +0 -0
  94. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/advanced/profile_matrix.py +0 -0
  95. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/advanced/temp_test.py +0 -0
  96. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/basics/basic_optimal_power_flow.py +0 -0
  97. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/basics/basic_power_flow.py +0 -0
  98. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/basics/basic_power_flow_examples.html +0 -0
  99. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/basics/basic_power_flow_examples.py +0 -0
  100. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/control_devices/fbs13.py +0 -0
  101. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/control_devices/reg_cap_example.py +0 -0
  102. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/cim_example.py +0 -0
  103. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/compare_cim_case.py +0 -0
  104. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/dss_converter_test.py +0 -0
  105. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/dss_examples.py +0 -0
  106. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/dss_test_loss.py +0 -0
  107. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/dss_test_results.txt +0 -0
  108. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/optimization/extract_duals.py +0 -0
  109. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/optimization/penalty_example.py +0 -0
  110. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/build_your_own_opf.py +0 -0
  111. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/build_your_own_opf_static.py +0 -0
  112. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/nlp.py +0 -0
  113. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_dss_example.py +0 -0
  114. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_mi.py +0 -0
  115. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_tests.py +0 -0
  116. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/01_simple_power_flow.py +0 -0
  117. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/02_loss_minimization.py +0 -0
  118. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/03_voltage_optimization.py +0 -0
  119. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/04_comparing_wrappers.py +0 -0
  120. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/05_control_strategies.py +0 -0
  121. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/06_visualization_gallery.py +0 -0
  122. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/07_quick_start.py +0 -0
  123. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/08_reactive_power_importance.py +0 -0
  124. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/09_optimization_tradeoffs.py +0 -0
  125. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/10_working_with_results.py +0 -0
  126. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/11_fbs_power_flow.py +0 -0
  127. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/__init__.py +0 -0
  128. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/__init__.py +0 -0
  129. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/cim/IEEE123_PV.xml +0 -0
  130. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/cim/IEEE13.xml +0 -0
  131. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/battery_data.csv +0 -0
  132. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/branch_data.csv +0 -0
  133. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/bus_data.csv +0 -0
  134. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/cap_data.csv +0 -0
  135. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/default_loadshape.csv +0 -0
  136. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/gen_data.csv +0 -0
  137. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/pv_loadshape.csv +0 -0
  138. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/reg_data.csv +0 -0
  139. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/battery_data.csv +0 -0
  140. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/branch_data.csv +0 -0
  141. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/bus_data.csv +0 -0
  142. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/cap_data.csv +0 -0
  143. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/default_loadshape.csv +0 -0
  144. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/gen_data.csv +0 -0
  145. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/pv_loadshape.csv +0 -0
  146. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/reg_data.csv +0 -0
  147. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/branch_data.csv +0 -0
  148. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/bus_data.csv +0 -0
  149. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/cap_data.csv +0 -0
  150. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/gen_data.csv +0 -0
  151. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/reg_data.csv +0 -0
  152. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/battery_data.csv +0 -0
  153. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/branch_data.csv +0 -0
  154. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/bus_data.csv +0 -0
  155. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/cap_data.csv +0 -0
  156. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/default_loadshape.csv +0 -0
  157. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/gen_data.csv +0 -0
  158. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/pv_loadshape.csv +0 -0
  159. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/reg_data.csv +0 -0
  160. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/branch_data.csv +0 -0
  161. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/bus_data.csv +0 -0
  162. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/cap_data.csv +0 -0
  163. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/gen_data.csv +0 -0
  164. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/reg_data.csv +0 -0
  165. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/branch_data.csv +0 -0
  166. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/bus_data.csv +0 -0
  167. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/cap_data.csv +0 -0
  168. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/gen_data.csv +0 -0
  169. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/reg_data.csv +0 -0
  170. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/branch_data.csv +0 -0
  171. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/bus_data.csv +0 -0
  172. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/cap_data.csv +0 -0
  173. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/gen_data.csv +0 -0
  174. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/reg_data.csv +0 -0
  175. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/bat_data.csv +0 -0
  176. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/branch_data.csv +0 -0
  177. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/bus_data.csv +0 -0
  178. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/cap_data.csv +0 -0
  179. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/default_loadshape.csv +0 -0
  180. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/gen_data.csv +0 -0
  181. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/pv_loadshape.csv +0 -0
  182. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/reg_data.csv +0 -0
  183. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/schedules.csv +0 -0
  184. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/battery_data.csv +0 -0
  185. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/branch_data.csv +0 -0
  186. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/bus_data.csv +0 -0
  187. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/cap_data.csv +0 -0
  188. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/default_loadshape.csv +0 -0
  189. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/gen_data.csv +0 -0
  190. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/pv_loadshape.csv +0 -0
  191. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/reg_data.csv +0 -0
  192. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/bat_data.csv +0 -0
  193. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/battery_data_v1.csv +0 -0
  194. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/branch_data.csv +0 -0
  195. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/bus_data.csv +0 -0
  196. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/cap_data.csv +0 -0
  197. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/gen_data.csv +0 -0
  198. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/reg_data.csv +0 -0
  199. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/schedules.csv +0 -0
  200. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/branch_data.csv +0 -0
  201. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/bus_data.csv +0 -0
  202. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/cap_data.csv +0 -0
  203. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/gen_data.csv +0 -0
  204. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/reg_data.csv +0 -0
  205. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/battery_data.csv +0 -0
  206. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/branch_data.csv +0 -0
  207. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/bus_data.csv +0 -0
  208. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/cap_data.csv +0 -0
  209. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/default_loadshape.csv +0 -0
  210. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/gen_data.csv +0 -0
  211. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/pv_loadshape.csv +0 -0
  212. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/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.dev4/src/distopf/cases/csv/ieee33/bat_data.csv +0 -0
  214. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/branch_data.csv +0 -0
  215. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/bus_data.csv +0 -0
  216. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/gen_data.csv +0 -0
  217. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/schedules.csv +0 -0
  218. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/branch_data.csv +0 -0
  219. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/bus_data.csv +0 -0
  220. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/cap_data.csv +0 -0
  221. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/gen_data.csv +0 -0
  222. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/reg_data.csv +0 -0
  223. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/branch_data.csv +0 -0
  224. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/bus_data.csv +0 -0
  225. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/cap_data.csv +0 -0
  226. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/gen_data.csv +0 -0
  227. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/reg_data.csv +0 -0
  228. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/branch_data.csv +0 -0
  229. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/bus_data.csv +0 -0
  230. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/cap_data.csv +0 -0
  231. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/gen_data.csv +0 -0
  232. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/reg_data.csv +0 -0
  233. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/branch_data.csv +0 -0
  234. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/bus_data.csv +0 -0
  235. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/cap_data.csv +0 -0
  236. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/gen_data.csv +0 -0
  237. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/reg_data.csv +0 -0
  238. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/branch_data.csv +0 -0
  239. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/bus_data.csv +0 -0
  240. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/cap_data.csv +0 -0
  241. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/gen_data.csv +0 -0
  242. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/reg_data.csv +0 -0
  243. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/branch_data.csv +0 -0
  244. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/bus_data.csv +0 -0
  245. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/cap_data.csv +0 -0
  246. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/gen_data.csv +0 -0
  247. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/reg_data.csv +0 -0
  248. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/branch_data.csv +0 -0
  249. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/bus_data.csv +0 -0
  250. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/cap_data.csv +0 -0
  251. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/gen_data.csv +0 -0
  252. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/reg_data.csv +0 -0
  253. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/2Bus/2Bus.DSS +0 -0
  254. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/2BusD/2Bus.DSS +0 -0
  255. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/2Bus_1phase/2Bus1ph.DSS +0 -0
  256. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/IEEE34_BusXY.csv +0 -0
  257. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/IEEELineCodes.dss +0 -0
  258. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod1.dss +0 -0
  259. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod2.dss +0 -0
  260. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_Curr_Elem.txt +0 -0
  261. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_Power_elem_kVA.txt +0 -0
  262. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_RegTaps.txt +0 -0
  263. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_VLN_Node.txt +0 -0
  264. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34Mod1.dss +0 -0
  265. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34Mod2.dss +0 -0
  266. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/nmsu_linecode2_ABC.txt +0 -0
  267. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/3Bus/3Bus.DSS +0 -0
  268. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4Bus-DY-Bal.DSS +0 -0
  269. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Curr_Elem.Txt +0 -0
  270. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Power_elem_kVA.txt +0 -0
  271. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLL_Node.Txt +0 -0
  272. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLN_Node.Txt +0 -0
  273. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4Bus-GrdYD-Bal.DSS +0 -0
  274. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_Losses.Txt +0 -0
  275. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_VLN_Node.Txt +0 -0
  276. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-OYOD-Bal/4Bus-OYOD-Bal.DSS +0 -0
  277. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-OYOD-UnBal/4bus-OYOD-UnBal.dss +0 -0
  278. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-YD-Bal/4Bus-YD-Bal.DSS +0 -0
  279. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-YY-Bal/4Bus-YY-Bal.DSS +0 -0
  280. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/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.dev4}/src/distopf/cases/dss/4Bus-YYD/YYD-Master.DSS +0 -0
  282. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Expanded4WireDelta.pdf +0 -0
  283. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Kersting4wireIndMotor.dss +0 -0
  284. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Lagging.dss +0 -0
  285. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Leading.dss +0 -0
  286. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/BalancedLoads.dss +0 -0
  287. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/BusCoords.dss +0 -0
  288. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/CableData.dss +0 -0
  289. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/CapControls.dss +0 -0
  290. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Capacitors.dss +0 -0
  291. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/DSSViewIntercom.Txt +0 -0
  292. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/EnergyStorage.dss +0 -0
  293. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Generators.dss +0 -0
  294. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LatLongCoords.dss +0 -0
  295. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LineCodes.dss +0 -0
  296. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LineGeometry.dss +0 -0
  297. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesGeometry.dss +0 -0
  298. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesLineCodes.dss +0 -0
  299. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LoadXfmrCodes.dss +0 -0
  300. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Loads_primary.dss +0 -0
  301. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Master-unbal-initial-config.dss +0 -0
  302. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Master.dss +0 -0
  303. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/PVSystems_primary.dss +0 -0
  304. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/PV_10pen_DSSPV.dss +0 -0
  305. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/PV_NN_100_DSSPV.dss +0 -0
  306. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/README.md +0 -0
  307. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Regulators.dss +0 -0
  308. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Transformers.dss +0 -0
  309. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/TriplexLineCodes.dss +0 -0
  310. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/TriplexLines.dss +0 -0
  311. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/UnbalancedLoads.dss +0 -0
  312. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/WireData.dss +0 -0
  313. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/bus_info_temp.json +0 -0
  314. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/desktop.ini +0 -0
  315. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.DSV +0 -0
  316. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.dbl +0 -0
  317. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Isolated.Txt +0 -0
  318. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Loops.Txt +0 -0
  319. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Power_elem_kVA.txt +0 -0
  320. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_VLN_Node.Txt +0 -0
  321. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/ieee9500bal.dss +0 -0
  322. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/ieee9500unbal.dss +0 -0
  323. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/xfmrs_info_triplex_nodes.json +0 -0
  324. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/BusCoords.dat +0 -0
  325. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/CircuitPlottingScripts.dss +0 -0
  326. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/DSSGraph_Output.CSV +0 -0
  327. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/DSSViewIntercom.Txt +0 -0
  328. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEE123Loads.DSS +0 -0
  329. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEE123Master.dss +0 -0
  330. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEE123Regulators.DSS +0 -0
  331. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEELineCodes.DSS +0 -0
  332. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/P174_Run_SolarRamp.DSS +0 -0
  333. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/P174_Run_VoltageProfile.DSS +0 -0
  334. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/PV5sdata1.csv +0 -0
  335. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/PaperLoadShape.txt +0 -0
  336. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/RevRegTest.dss +0 -0
  337. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/Run_IEEE123Bus.DSS +0 -0
  338. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/Run_YearlySim.dss +0 -0
  339. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SetDailyLoadShape.DSS +0 -0
  340. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SolarRamp-Mack.DSS +0 -0
  341. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SolarRamp.DSS +0 -0
  342. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SolarRamp.csv +0 -0
  343. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/StorageRamp.CSV +0 -0
  344. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/WindRamp.DSS +0 -0
  345. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/WindRampRevRegTest.DSS +0 -0
  346. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Curr_Elem.Txt +0 -0
  347. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.DSV +0 -0
  348. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.dbl +0 -0
  349. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_BUSCOORDS.CSV +0 -0
  350. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_ElemPowers.CSV +0 -0
  351. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_LOADS.CSV +0 -0
  352. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_P_BYPHASE.CSV +0 -0
  353. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Elements.Txt +0 -0
  354. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_GenMeterOut.Txt +0 -0
  355. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.DSV +0 -0
  356. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.dbl +0 -0
  357. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Loops.Txt +0 -0
  358. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.DSV +0 -0
  359. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.dbl +0 -0
  360. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.DSV +0 -0
  361. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.dbl +0 -0
  362. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_elem_kVA.txt +0 -0
  363. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_seq_kVA.txt +0 -0
  364. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.DSV +0 -0
  365. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.dbl +0 -0
  366. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.DSV +0 -0
  367. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.dbl +0 -0
  368. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_RegTaps.Txt +0 -0
  369. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN.Txt +0 -0
  370. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN_Node.Txt +0 -0
  371. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.DSV +0 -0
  372. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.dbl +0 -0
  373. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.DSV +0 -0
  374. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.dbl +0 -0
  375. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.DSV +0 -0
  376. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.dbl +0 -0
  377. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/DSSViewIntercom.Txt +0 -0
  378. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Node_BusXY.csv +0 -0
  379. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt.dss +0 -0
  380. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_EXP_ElemPowers.CSV +0 -0
  381. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.DSV +0 -0
  382. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.dbl +0 -0
  383. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power_elem_kVA.txt +0 -0
  384. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEELineCodes.dss +0 -0
  385. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/branch_data.csv +0 -0
  386. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/bus_data.csv +0 -0
  387. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/cap_data.csv +0 -0
  388. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/gen_data.csv +0 -0
  389. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/BalancedLoads.dss +0 -0
  390. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/BusCoords.dss +0 -0
  391. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/CableData.dss +0 -0
  392. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/CapControls.dss +0 -0
  393. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Capacitors.dss +0 -0
  394. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/DSSViewIntercom.Txt +0 -0
  395. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/EnergyStorage.dss +0 -0
  396. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Generators.dss +0 -0
  397. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LatLongCoords.dss +0 -0
  398. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LineCodes.dss +0 -0
  399. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LineConstantsCode.DSS +0 -0
  400. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LineGeometry.dss +0 -0
  401. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesGeometry.dss +0 -0
  402. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesLineCodes.dss +0 -0
  403. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LoadXfmrCodes.dss +0 -0
  404. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Master-bal-initial-config.dss +0 -0
  405. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Master-unbal-initial-config.dss +0 -0
  406. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/PV_10pen_DSSPV.dss +0 -0
  407. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/PV_NN_100_DSSPV.dss +0 -0
  408. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/README.md +0 -0
  409. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Regulators.dss +0 -0
  410. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Elements.Txt +0 -0
  411. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_LineConstants.txt +0 -0
  412. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Mon_mon1_1.csv +0 -0
  413. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.DSV +0 -0
  414. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.dbl +0 -0
  415. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power_elem_kVA.txt +0 -0
  416. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Transformers.dss +0 -0
  417. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/TriplexLineCodes.dss +0 -0
  418. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/TriplexLines.dss +0 -0
  419. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/UnbalancedLoads.dss +0 -0
  420. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/WireData.dss +0 -0
  421. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/BalancedLoads.dss +0 -0
  422. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/BusCoords.dss +0 -0
  423. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/CableData.dss +0 -0
  424. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/CapControls.dss +0 -0
  425. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Capacitors.dss +0 -0
  426. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/DSSViewIntercom.Txt +0 -0
  427. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/EnergyStorage.dss +0 -0
  428. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Generators.dss +0 -0
  429. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LatLongCoords.dss +0 -0
  430. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LineCodes.dss +0 -0
  431. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LineConstantsCode.DSS +0 -0
  432. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LineGeometry.dss +0 -0
  433. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesGeometry.dss +0 -0
  434. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesLineCodes.dss +0 -0
  435. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LoadXfmrCodes.dss +0 -0
  436. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Master-bal-initial-config.dss +0 -0
  437. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Master-unbal-initial-config.dss +0 -0
  438. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/PV_10pen_DSSPV.dss +0 -0
  439. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/PV_NN_100_DSSPV.dss +0 -0
  440. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/README.md +0 -0
  441. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Regulators.dss +0 -0
  442. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Elements.Txt +0 -0
  443. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_LineConstants.txt +0 -0
  444. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Mon_mon1_1.csv +0 -0
  445. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.DSV +0 -0
  446. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.dbl +0 -0
  447. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power_elem_kVA.txt +0 -0
  448. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Transformers.dss +0 -0
  449. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/TriplexLineCodes.dss +0 -0
  450. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/TriplexLines.dss +0 -0
  451. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/UnbalancedLoads.dss +0 -0
  452. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/WireData.dss +0 -0
  453. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/minimal_triplex/minimal_triplex.dss +0 -0
  454. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/Line.txt +0 -0
  455. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/Load.txt +0 -0
  456. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/MyLineCodes.txt +0 -0
  457. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/ieee123master_base.dss +0 -0
  458. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Buscoords.dss +0 -0
  459. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Intermediates.txt +0 -0
  460. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/LineCodes.dss +0 -0
  461. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Lines.dss +0 -0
  462. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/LoadShapes.dss +0 -0
  463. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Loads.dss +0 -0
  464. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Master.dss +0 -0
  465. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/PVSystems.dss +0 -0
  466. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/SMART-DS_version.txt +0 -0
  467. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Transformers.dss +0 -0
  468. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/Summary_data.csv +0 -0
  469. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/blown_fuses.csv +0 -0
  470. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/de-energized_nodes.csv +0 -0
  471. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_line_overloads.csv +0 -0
  472. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_over_voltages.csv +0 -0
  473. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_transformer_overloads.csv +0 -0
  474. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_under_voltages.csv +0 -0
  475. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_voltages.csv +0 -0
  476. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_histogram.png +0 -0
  477. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_percentiles.png +0 -0
  478. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/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.dev4}/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.dev4}/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.dev4}/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.dev4}/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.dev4}/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.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_16017_pu.csv +0 -0
  485. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17146_pu.csv +0 -0
  486. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17950_pu.csv +0 -0
  487. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_1835_pu.csv +0 -0
  488. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19648_pu.csv +0 -0
  489. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19955_pu.csv +0 -0
  490. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_20964_pu.csv +0 -0
  491. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22499_pu.csv +0 -0
  492. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22635_pu.csv +0 -0
  493. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_2581_pu.csv +0 -0
  494. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29069_pu.csv +0 -0
  495. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29376_pu.csv +0 -0
  496. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29596_pu.csv +0 -0
  497. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31655_pu.csv +0 -0
  498. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31818_pu.csv +0 -0
  499. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_32244_pu.csv +0 -0
  500. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33164_pu.csv +0 -0
  501. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33792_pu.csv +0 -0
  502. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8445_pu.csv +0 -0
  503. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8470_pu.csv +0 -0
  504. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_16017_pu.csv +0 -0
  505. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17146_pu.csv +0 -0
  506. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17950_pu.csv +0 -0
  507. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_1835_pu.csv +0 -0
  508. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19648_pu.csv +0 -0
  509. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19955_pu.csv +0 -0
  510. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_20964_pu.csv +0 -0
  511. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22499_pu.csv +0 -0
  512. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22635_pu.csv +0 -0
  513. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_2581_pu.csv +0 -0
  514. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29069_pu.csv +0 -0
  515. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29376_pu.csv +0 -0
  516. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29596_pu.csv +0 -0
  517. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31655_pu.csv +0 -0
  518. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31818_pu.csv +0 -0
  519. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_32244_pu.csv +0 -0
  520. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33164_pu.csv +0 -0
  521. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33792_pu.csv +0 -0
  522. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8445_pu.csv +0 -0
  523. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8470_pu.csv +0 -0
  524. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_10747_pu.csv +0 -0
  525. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_1077_pu.csv +0 -0
  526. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_13334_pu.csv +0 -0
  527. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14588_pu.csv +0 -0
  528. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14705_pu.csv +0 -0
  529. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_3216_pu.csv +0 -0
  530. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_6157_pu.csv +0 -0
  531. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_7380_pu.csv +0 -0
  532. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_10747_pu.csv +0 -0
  533. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_1077_pu.csv +0 -0
  534. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_13334_pu.csv +0 -0
  535. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14588_pu.csv +0 -0
  536. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14705_pu.csv +0 -0
  537. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_3216_pu.csv +0 -0
  538. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_6157_pu.csv +0 -0
  539. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_7380_pu.csv +0 -0
  540. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/sensors/reactive_ids.json +0 -0
  541. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/sensors/real_ids.json +0 -0
  542. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/sensors/voltage_ids.json +0 -0
  543. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line/main.dss +0 -0
  544. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line_unbal_line/main.dss +0 -0
  545. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line_unbal_load/main.dss +0 -0
  546. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line_unbal_load_unbal_line/main.dss +0 -0
  547. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_reg/main.dss +0 -0
  548. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/triplex_3ph/triplex_3ph.dss +0 -0
  549. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/triplex_pv/triplex_pv.dss +0 -0
  550. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/__init__.py +0 -0
  551. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/cim_to_csv_converter.py +0 -0
  552. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/__init__.py +0 -0
  553. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/base_processor.py +0 -0
  554. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/bus_processor.py +0 -0
  555. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/capacitor_processor.py +0 -0
  556. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/generator_processor.py +0 -0
  557. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/line_processor.py +0 -0
  558. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/regulator_processor.py +0 -0
  559. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/switch_processor.py +0 -0
  560. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/transformer_processor.py +0 -0
  561. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/utils/__init__.py +0 -0
  562. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/utils/phase_utils.py +0 -0
  563. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/validators/__init__.py +0 -0
  564. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/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.dev4/src/distopf/distributed/spatial}/__init__.py +0 -0
  566. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/dss_importer/__init__.py +0 -0
  567. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/__init__.py +0 -0
  568. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/binary_variable_notes.md +0 -0
  569. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist.py +0 -0
  570. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_capacitor_mi.py +0 -0
  571. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_capacitor_regulator_mi.py +0 -0
  572. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_loads.py +0 -0
  573. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_p_gen.py +0 -0
  574. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_q_gen.py +0 -0
  575. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_regulator_mi.py +0 -0
  576. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/__init__.py +0 -0
  577. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/lindist_capacitor_mi_mp.py +0 -0
  578. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/lindist_loads_mp.py +0 -0
  579. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/lindist_mp.py +0 -0
  580. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/pyomo_solver.py +0 -0
  581. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/readme.md +0 -0
  582. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/solvers.py +0 -0
  583. {distopf-1.1.0.dev2/src/distopf → distopf-1.1.0.dev4/src/distopf/matrix_models/matrix_bess}/spatial_decomposition/__init__.py +0 -0
  584. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/objectives.py +0 -0
  585. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/solvers.py +0 -0
  586. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/factories.py +0 -0
  587. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/nl_branchflow_prebuilt.py +0 -0
  588. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/protocol.py +0 -0
  589. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/__init__.py +0 -0
  590. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/input_handlers.py +0 -0
  591. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/ngon.py +0 -0
  592. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/query_interface.py +0 -0
  593. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/results_comparison.py +0 -0
  594. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/__init__.py +0 -0
  595. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/base.py +0 -0
  596. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/__init__.py +0 -0
  597. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/conftest.py +0 -0
  598. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/IEEE13.xml +0 -0
  599. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/branch_data.csv +0 -0
  600. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/bus_data.csv +0 -0
  601. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/cap_data.csv +0 -0
  602. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/gen_data.csv +0 -0
  603. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/reg_data.csv +0 -0
  604. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/integration/__init__.py +0 -0
  605. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/integration/test_full_conversion.py +0 -0
  606. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/integration/test_impedance_comparison.py +0 -0
  607. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/__init__.py +0 -0
  608. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_cim_to_csv_helpser.py +0 -0
  609. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_cim_to_csv_linking.py +0 -0
  610. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_converter_run.py +0 -0
  611. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_phase_utils.py +0 -0
  612. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_processors.py +0 -0
  613. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_reg_transformer_small.py +0 -0
  614. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_regulator_impedances.py +0 -0
  615. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_topology_validator.py +0 -0
  616. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_transformer_tank_impedances.py +0 -0
  617. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/__init__.py +0 -0
  618. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/integration/__init__.py +0 -0
  619. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/integration/test_dss_converter_integration.py +0 -0
  620. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/integration/test_triplex_lindist.py +0 -0
  621. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/__init__.py +0 -0
  622. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_dss_converter.py +0 -0
  623. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_transformer.py +0 -0
  624. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_triplex_converter.py +0 -0
  625. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/integration_references.json +0 -0
  626. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/pyomo_models/test_pyomo_lindist.py +0 -0
  627. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_backends.py +0 -0
  628. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_exports.py +0 -0
  629. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_integration_snapshots.py +0 -0
  630. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_matrix_models.py +0 -0
  631. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_smoke.py +0 -0
  632. {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/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.dev4
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,47 @@ 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=True,
131
+ max_iterations=25,
132
+ )
133
+ ```
134
+
135
+ Set `parallel=True` to solve the independent area subproblems with multiprocessing. The coordination iterations themselves remain sequential: each iteration waits for all area solves before exchanging boundary messages. Use `parallel=False` for serial execution or when debugging.
136
+
137
+ 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, topology, and `parallel` setting, so named-objective runs can be reproduced with [`replay()`](src/distopf/api.py:1140):
138
+
139
+ ```python
140
+ result.save("results/ieee13-enapp")
141
+ replayed = opf.replay("results/ieee13-enapp/run_config.json")
142
+ ```
143
+
144
+ Replay preserves the recorded `parallel` setting for ENAPP and ADMM. Parallel replay requires a normal multiprocessing-capable execution environment; arbitrary custom objective callables and solve/iteration callbacks remain non-replayable because they cannot be reconstructed from JSON.
145
+
146
+
147
+
107
148
  ## Optimization Wrappers
108
149
 
109
150
  DistOPF supports multiple optimization wrappers for solving OPF problems:
@@ -129,6 +170,27 @@ Use `formulation="branchflow"`.
129
170
  - **Speed**: Slower than linear, but more accurate
130
171
  - **Accuracy**: Nonlinear power flow representation
131
172
 
173
+ ### Pyomo Wrapper — SOCP Relaxation
174
+ The SOCP formulation is a relaxation of the nonlinear BranchFlow model. It uses the same
175
+ Pyomo/IPOPT solve path, but replaces the two branch-current equality constraints with
176
+ inequality constraints. Use `formulation="socp"`.
177
+
178
+ - **Model**: BranchFlow model with relaxed current constraints
179
+ - **Solver**: IPOPT for continuous problems; MINLP solvers for discrete controls
180
+ - **Use case**: Faster or more robust optimization when exact current equalities are not required
181
+ - **Wrapper**: Pyomo only; it is not available through the matrix wrappers
182
+
183
+ ```python
184
+ import distopf as opf
185
+
186
+ case = opf.create_case(opf.CASES_DIR / "csv" / "ieee13")
187
+ result = case.run_opf(
188
+ formulation="socp",
189
+ objective="loss",
190
+ solver="ipopt",
191
+ )
192
+ ```
193
+
132
194
  #### Continuous Optimization (IPOPT)
133
195
  For continuous optimization without discrete controls:
134
196
 
@@ -171,7 +233,7 @@ result = case.run_opf(wrapper="matrix_bess", objective="loss")
171
233
  #### Wrapper Comparison
172
234
  | Feature | Matrix/Matrix BESS | Pyomo |
173
235
  |---------|---|---|
174
- | Model Type | LinDistFlow (linear) | LinDistFlow or Non-Linear BranchFlow |
236
+ | Model Type | LinDistFlow (linear) | LinDistFlow, BranchFlow, or SOCP-relaxed BranchFlow |
175
237
  | Formulation | Matrix-based | Algebraic equations |
176
238
  | Solver API | Scipy or CVXPY | Pyomo |
177
239
  | Prefered Solver | HiGHs or Clarabel | IPOPT, Gurobi, Knitro |
@@ -189,7 +251,7 @@ DistOPF supports multiple optimization objectives for distribution system OPF:
189
251
  | **Substation Power** | `"substation"`, `"substation_power"` | Pyomo, Matrix | Minimize power imported from substation |
190
252
  | **Voltage Deviation** | `"voltage_deviation"` | Pyomo | Minimize deviations from nominal voltage (1.0 p.u.) |
191
253
  | **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Pyomo | Minimize DER curtailment |
192
- | **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo (LinDistFlow, BranchFlow) | Minimize energy procurement cost from swing bus |
254
+ | **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo (LinDistFlow, BranchFlow, SOCP) | Minimize energy procurement cost from swing bus |
193
255
 
194
256
  #### Cost Minimization with Price Data
195
257
 
@@ -80,6 +80,47 @@ 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=True,
107
+ max_iterations=25,
108
+ )
109
+ ```
110
+
111
+ Set `parallel=True` to solve the independent area subproblems with multiprocessing. The coordination iterations themselves remain sequential: each iteration waits for all area solves before exchanging boundary messages. Use `parallel=False` for serial execution or when debugging.
112
+
113
+ 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, topology, and `parallel` setting, so named-objective runs can be reproduced with [`replay()`](src/distopf/api.py:1140):
114
+
115
+ ```python
116
+ result.save("results/ieee13-enapp")
117
+ replayed = opf.replay("results/ieee13-enapp/run_config.json")
118
+ ```
119
+
120
+ Replay preserves the recorded `parallel` setting for ENAPP and ADMM. Parallel replay requires a normal multiprocessing-capable execution environment; arbitrary custom objective callables and solve/iteration callbacks remain non-replayable because they cannot be reconstructed from JSON.
121
+
122
+
123
+
83
124
  ## Optimization Wrappers
84
125
 
85
126
  DistOPF supports multiple optimization wrappers for solving OPF problems:
@@ -105,6 +146,27 @@ Use `formulation="branchflow"`.
105
146
  - **Speed**: Slower than linear, but more accurate
106
147
  - **Accuracy**: Nonlinear power flow representation
107
148
 
149
+ ### Pyomo Wrapper — SOCP Relaxation
150
+ The SOCP formulation is a relaxation of the nonlinear BranchFlow model. It uses the same
151
+ Pyomo/IPOPT solve path, but replaces the two branch-current equality constraints with
152
+ inequality constraints. Use `formulation="socp"`.
153
+
154
+ - **Model**: BranchFlow model with relaxed current constraints
155
+ - **Solver**: IPOPT for continuous problems; MINLP solvers for discrete controls
156
+ - **Use case**: Faster or more robust optimization when exact current equalities are not required
157
+ - **Wrapper**: Pyomo only; it is not available through the matrix wrappers
158
+
159
+ ```python
160
+ import distopf as opf
161
+
162
+ case = opf.create_case(opf.CASES_DIR / "csv" / "ieee13")
163
+ result = case.run_opf(
164
+ formulation="socp",
165
+ objective="loss",
166
+ solver="ipopt",
167
+ )
168
+ ```
169
+
108
170
  #### Continuous Optimization (IPOPT)
109
171
  For continuous optimization without discrete controls:
110
172
 
@@ -147,7 +209,7 @@ result = case.run_opf(wrapper="matrix_bess", objective="loss")
147
209
  #### Wrapper Comparison
148
210
  | Feature | Matrix/Matrix BESS | Pyomo |
149
211
  |---------|---|---|
150
- | Model Type | LinDistFlow (linear) | LinDistFlow or Non-Linear BranchFlow |
212
+ | Model Type | LinDistFlow (linear) | LinDistFlow, BranchFlow, or SOCP-relaxed BranchFlow |
151
213
  | Formulation | Matrix-based | Algebraic equations |
152
214
  | Solver API | Scipy or CVXPY | Pyomo |
153
215
  | Prefered Solver | HiGHs or Clarabel | IPOPT, Gurobi, Knitro |
@@ -165,7 +227,7 @@ DistOPF supports multiple optimization objectives for distribution system OPF:
165
227
  | **Substation Power** | `"substation"`, `"substation_power"` | Pyomo, Matrix | Minimize power imported from substation |
166
228
  | **Voltage Deviation** | `"voltage_deviation"` | Pyomo | Minimize deviations from nominal voltage (1.0 p.u.) |
167
229
  | **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Pyomo | Minimize DER curtailment |
168
- | **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo (LinDistFlow, BranchFlow) | Minimize energy procurement cost from swing bus |
230
+ | **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo (LinDistFlow, BranchFlow, SOCP) | Minimize energy procurement cost from swing bus |
169
231
 
170
232
  #### Cost Minimization with Price Data
171
233
 
@@ -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