distopf 1.1.0.dev3__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 (630) hide show
  1. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/PKG-INFO +29 -6
  2. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/README.md +28 -5
  3. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/pyproject.toml +1 -1
  4. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/api.py +8 -2
  5. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/constraints_nlp.py +26 -2
  6. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/wrappers/pyomo_wrapper.py +23 -12
  7. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_distributed_api.py +8 -2
  8. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_nlp_backend.py +48 -4
  9. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/uv.lock +36 -36
  10. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/.github/copilot-instructions.md +0 -0
  11. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/.github/skills/run-opf/SKILL.md +0 -0
  12. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/.github/workflows/lint.yml +0 -0
  13. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/.github/workflows/pypi-publish.yml +0 -0
  14. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/.gitignore +0 -0
  15. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/2026-04-21-distopf_2-triplex-agent.md +0 -0
  16. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/DISCLAIMER.md +0 -0
  17. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/LICENSE.md +0 -0
  18. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/column_migration.md +0 -0
  19. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/docs/STYLE_GUIDE.md +0 -0
  20. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/docs/architecture.puml +0 -0
  21. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/README.md +0 -0
  22. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/TEMPORAL_README.md +0 -0
  23. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/debug_enapp_123.py +0 -0
  24. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/profile_matrix.py +0 -0
  25. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/run_enapp.py +0 -0
  26. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/run_enapp_123.py +0 -0
  27. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/run_enapp_123_isolated.py +0 -0
  28. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/run_enapp_123_spatiotemporal.py +0 -0
  29. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/run_enapp_refactor.py +0 -0
  30. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/run_enapp_tenapp.py +0 -0
  31. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/run_temporal_comparison.py +0 -0
  32. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/run_temporal_quick.py +0 -0
  33. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/run_temporal_tenapp.py +0 -0
  34. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/advanced/temp_test.py +0 -0
  35. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/basics/basic_optimal_power_flow.py +0 -0
  36. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/basics/basic_power_flow.py +0 -0
  37. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/basics/basic_power_flow_examples.html +0 -0
  38. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/basics/basic_power_flow_examples.py +0 -0
  39. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/control_devices/fbs13.py +0 -0
  40. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/control_devices/reg_cap_example.py +0 -0
  41. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/control_devices/test_regulator_mi.py +0 -0
  42. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/data_import/cim_example.py +0 -0
  43. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/data_import/compare_cim_case.py +0 -0
  44. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/data_import/dss_converter_test.py +0 -0
  45. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/data_import/dss_examples.py +0 -0
  46. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/data_import/dss_test_loss.py +0 -0
  47. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/data_import/dss_test_results.txt +0 -0
  48. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/notebooks/adding_generators.ipynb +0 -0
  49. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/notebooks/adding_generators.py +0 -0
  50. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/notebooks/basic_power_flow_examples.ipynb +0 -0
  51. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/notebooks/build_your_own_opf.ipynb +0 -0
  52. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/notebooks/distopf_pesgm2026_tutorial.ipynb +0 -0
  53. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/optimization/extract_duals.py +0 -0
  54. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/optimization/penalties.py +0 -0
  55. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/optimization/penalty_example.py +0 -0
  56. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/optimization/thermal_limits.py +0 -0
  57. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/build_your_own_opf.py +0 -0
  58. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/build_your_own_opf_static.py +0 -0
  59. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/nlp.py +0 -0
  60. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_dss_example.py +0 -0
  61. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_mi.py +0 -0
  62. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_multiperiod.py +0 -0
  63. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_nlp_123_comparison.py +0 -0
  64. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_nlp_13_comparison.py +0 -0
  65. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_regulator_control.py +0 -0
  66. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_tests.py +0 -0
  67. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_time_comparison.py +0 -0
  68. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/01_simple_power_flow.py +0 -0
  69. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/02_loss_minimization.py +0 -0
  70. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/03_voltage_optimization.py +0 -0
  71. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/04_comparing_wrappers.py +0 -0
  72. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/05_control_strategies.py +0 -0
  73. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/06_visualization_gallery.py +0 -0
  74. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/07_quick_start.py +0 -0
  75. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/08_reactive_power_importance.py +0 -0
  76. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/09_optimization_tradeoffs.py +0 -0
  77. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/10_working_with_results.py +0 -0
  78. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/examples/tutorials/11_fbs_power_flow.py +0 -0
  79. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/__init__.py +0 -0
  80. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/__init__.py +0 -0
  81. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/cim/IEEE123_PV.xml +0 -0
  82. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/cim/IEEE13.xml +0 -0
  83. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/battery_data.csv +0 -0
  84. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/branch_data.csv +0 -0
  85. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/bus_data.csv +0 -0
  86. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/cap_data.csv +0 -0
  87. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/default_loadshape.csv +0 -0
  88. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/gen_data.csv +0 -0
  89. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/pv_loadshape.csv +0 -0
  90. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/reg_data.csv +0 -0
  91. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/battery_data.csv +0 -0
  92. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/branch_data.csv +0 -0
  93. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/bus_data.csv +0 -0
  94. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/cap_data.csv +0 -0
  95. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/default_loadshape.csv +0 -0
  96. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/gen_data.csv +0 -0
  97. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/pv_loadshape.csv +0 -0
  98. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/reg_data.csv +0 -0
  99. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/branch_data.csv +0 -0
  100. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/bus_data.csv +0 -0
  101. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/cap_data.csv +0 -0
  102. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/gen_data.csv +0 -0
  103. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/reg_data.csv +0 -0
  104. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/battery_data.csv +0 -0
  105. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/branch_data.csv +0 -0
  106. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/bus_data.csv +0 -0
  107. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/cap_data.csv +0 -0
  108. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/default_loadshape.csv +0 -0
  109. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/gen_data.csv +0 -0
  110. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/pv_loadshape.csv +0 -0
  111. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/reg_data.csv +0 -0
  112. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/branch_data.csv +0 -0
  113. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/bus_data.csv +0 -0
  114. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/cap_data.csv +0 -0
  115. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/gen_data.csv +0 -0
  116. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/reg_data.csv +0 -0
  117. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/branch_data.csv +0 -0
  118. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/bus_data.csv +0 -0
  119. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/cap_data.csv +0 -0
  120. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/gen_data.csv +0 -0
  121. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/reg_data.csv +0 -0
  122. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/branch_data.csv +0 -0
  123. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/bus_data.csv +0 -0
  124. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/cap_data.csv +0 -0
  125. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/gen_data.csv +0 -0
  126. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/reg_data.csv +0 -0
  127. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/bat_data.csv +0 -0
  128. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/branch_data.csv +0 -0
  129. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/bus_data.csv +0 -0
  130. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/cap_data.csv +0 -0
  131. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/default_loadshape.csv +0 -0
  132. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/gen_data.csv +0 -0
  133. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/pv_loadshape.csv +0 -0
  134. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/reg_data.csv +0 -0
  135. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/schedules.csv +0 -0
  136. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/battery_data.csv +0 -0
  137. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/branch_data.csv +0 -0
  138. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/bus_data.csv +0 -0
  139. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/cap_data.csv +0 -0
  140. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/default_loadshape.csv +0 -0
  141. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/gen_data.csv +0 -0
  142. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/pv_loadshape.csv +0 -0
  143. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/reg_data.csv +0 -0
  144. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/bat_data.csv +0 -0
  145. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/battery_data_v1.csv +0 -0
  146. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/branch_data.csv +0 -0
  147. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/bus_data.csv +0 -0
  148. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/cap_data.csv +0 -0
  149. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/gen_data.csv +0 -0
  150. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/reg_data.csv +0 -0
  151. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/schedules.csv +0 -0
  152. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/branch_data.csv +0 -0
  153. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/bus_data.csv +0 -0
  154. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/cap_data.csv +0 -0
  155. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/gen_data.csv +0 -0
  156. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/reg_data.csv +0 -0
  157. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/battery_data.csv +0 -0
  158. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/branch_data.csv +0 -0
  159. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/bus_data.csv +0 -0
  160. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/cap_data.csv +0 -0
  161. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/default_loadshape.csv +0 -0
  162. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/gen_data.csv +0 -0
  163. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/pv_loadshape.csv +0 -0
  164. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/reg_data.csv +0 -0
  165. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/bat_data.csv +0 -0
  166. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/branch_data.csv +0 -0
  167. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/bus_data.csv +0 -0
  168. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/gen_data.csv +0 -0
  169. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/schedules.csv +0 -0
  170. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/branch_data.csv +0 -0
  171. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/bus_data.csv +0 -0
  172. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/cap_data.csv +0 -0
  173. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/gen_data.csv +0 -0
  174. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/reg_data.csv +0 -0
  175. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/branch_data.csv +0 -0
  176. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/bus_data.csv +0 -0
  177. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/cap_data.csv +0 -0
  178. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/gen_data.csv +0 -0
  179. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/reg_data.csv +0 -0
  180. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/branch_data.csv +0 -0
  181. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/bus_data.csv +0 -0
  182. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/cap_data.csv +0 -0
  183. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/gen_data.csv +0 -0
  184. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/reg_data.csv +0 -0
  185. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/branch_data.csv +0 -0
  186. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/bus_data.csv +0 -0
  187. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/cap_data.csv +0 -0
  188. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/gen_data.csv +0 -0
  189. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/reg_data.csv +0 -0
  190. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/branch_data.csv +0 -0
  191. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/bus_data.csv +0 -0
  192. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/cap_data.csv +0 -0
  193. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/gen_data.csv +0 -0
  194. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/reg_data.csv +0 -0
  195. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/branch_data.csv +0 -0
  196. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/bus_data.csv +0 -0
  197. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/cap_data.csv +0 -0
  198. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/gen_data.csv +0 -0
  199. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/reg_data.csv +0 -0
  200. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/branch_data.csv +0 -0
  201. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/bus_data.csv +0 -0
  202. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/cap_data.csv +0 -0
  203. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/gen_data.csv +0 -0
  204. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/reg_data.csv +0 -0
  205. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/2Bus/2Bus.DSS +0 -0
  206. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/2BusD/2Bus.DSS +0 -0
  207. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/2Bus_1phase/2Bus1ph.DSS +0 -0
  208. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/IEEE34_BusXY.csv +0 -0
  209. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/IEEELineCodes.dss +0 -0
  210. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod1.dss +0 -0
  211. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod2.dss +0 -0
  212. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_Curr_Elem.txt +0 -0
  213. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_Power_elem_kVA.txt +0 -0
  214. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_RegTaps.txt +0 -0
  215. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_VLN_Node.txt +0 -0
  216. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34Mod1.dss +0 -0
  217. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34Mod2.dss +0 -0
  218. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/nmsu_linecode2_ABC.txt +0 -0
  219. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/3Bus/3Bus.DSS +0 -0
  220. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4Bus-DY-Bal.DSS +0 -0
  221. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Curr_Elem.Txt +0 -0
  222. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Power_elem_kVA.txt +0 -0
  223. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLL_Node.Txt +0 -0
  224. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLN_Node.Txt +0 -0
  225. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4Bus-GrdYD-Bal.DSS +0 -0
  226. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_Losses.Txt +0 -0
  227. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_VLN_Node.Txt +0 -0
  228. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-OYOD-Bal/4Bus-OYOD-Bal.DSS +0 -0
  229. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-OYOD-UnBal/4bus-OYOD-UnBal.dss +0 -0
  230. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-YD-Bal/4Bus-YD-Bal.DSS +0 -0
  231. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-YY-Bal/4Bus-YY-Bal.DSS +0 -0
  232. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-YYD/Three Winding Transformer Test System-EPRI-2017-Rev4.docx +0 -0
  233. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-YYD/YYD-Master.DSS +0 -0
  234. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Expanded4WireDelta.pdf +0 -0
  235. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Kersting4wireIndMotor.dss +0 -0
  236. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Lagging.dss +0 -0
  237. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Leading.dss +0 -0
  238. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/BalancedLoads.dss +0 -0
  239. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/BusCoords.dss +0 -0
  240. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/CableData.dss +0 -0
  241. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/CapControls.dss +0 -0
  242. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Capacitors.dss +0 -0
  243. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/DSSViewIntercom.Txt +0 -0
  244. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/EnergyStorage.dss +0 -0
  245. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Generators.dss +0 -0
  246. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LatLongCoords.dss +0 -0
  247. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LineCodes.dss +0 -0
  248. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LineGeometry.dss +0 -0
  249. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesGeometry.dss +0 -0
  250. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesLineCodes.dss +0 -0
  251. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LoadXfmrCodes.dss +0 -0
  252. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Loads_primary.dss +0 -0
  253. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Master-unbal-initial-config.dss +0 -0
  254. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Master.dss +0 -0
  255. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/PVSystems_primary.dss +0 -0
  256. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/PV_10pen_DSSPV.dss +0 -0
  257. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/PV_NN_100_DSSPV.dss +0 -0
  258. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/README.md +0 -0
  259. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Regulators.dss +0 -0
  260. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Transformers.dss +0 -0
  261. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/TriplexLineCodes.dss +0 -0
  262. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/TriplexLines.dss +0 -0
  263. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/UnbalancedLoads.dss +0 -0
  264. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/WireData.dss +0 -0
  265. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/bus_info_temp.json +0 -0
  266. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/desktop.ini +0 -0
  267. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.DSV +0 -0
  268. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.dbl +0 -0
  269. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Isolated.Txt +0 -0
  270. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Loops.Txt +0 -0
  271. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Power_elem_kVA.txt +0 -0
  272. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_VLN_Node.Txt +0 -0
  273. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/ieee9500bal.dss +0 -0
  274. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/ieee9500unbal.dss +0 -0
  275. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/xfmrs_info_triplex_nodes.json +0 -0
  276. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/BusCoords.dat +0 -0
  277. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/CircuitPlottingScripts.dss +0 -0
  278. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/DSSGraph_Output.CSV +0 -0
  279. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/DSSViewIntercom.Txt +0 -0
  280. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEE123Loads.DSS +0 -0
  281. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEE123Master.dss +0 -0
  282. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEE123Regulators.DSS +0 -0
  283. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEELineCodes.DSS +0 -0
  284. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/P174_Run_SolarRamp.DSS +0 -0
  285. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/P174_Run_VoltageProfile.DSS +0 -0
  286. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/PV5sdata1.csv +0 -0
  287. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/PaperLoadShape.txt +0 -0
  288. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/RevRegTest.dss +0 -0
  289. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/Run_IEEE123Bus.DSS +0 -0
  290. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/Run_YearlySim.dss +0 -0
  291. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SetDailyLoadShape.DSS +0 -0
  292. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SolarRamp-Mack.DSS +0 -0
  293. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SolarRamp.DSS +0 -0
  294. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SolarRamp.csv +0 -0
  295. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/StorageRamp.CSV +0 -0
  296. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/WindRamp.DSS +0 -0
  297. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/WindRampRevRegTest.DSS +0 -0
  298. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Curr_Elem.Txt +0 -0
  299. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.DSV +0 -0
  300. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.dbl +0 -0
  301. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_BUSCOORDS.CSV +0 -0
  302. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_ElemPowers.CSV +0 -0
  303. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_LOADS.CSV +0 -0
  304. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_P_BYPHASE.CSV +0 -0
  305. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Elements.Txt +0 -0
  306. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_GenMeterOut.Txt +0 -0
  307. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.DSV +0 -0
  308. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.dbl +0 -0
  309. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Loops.Txt +0 -0
  310. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.DSV +0 -0
  311. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.dbl +0 -0
  312. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.DSV +0 -0
  313. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.dbl +0 -0
  314. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_elem_kVA.txt +0 -0
  315. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_seq_kVA.txt +0 -0
  316. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.DSV +0 -0
  317. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.dbl +0 -0
  318. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.DSV +0 -0
  319. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.dbl +0 -0
  320. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_RegTaps.Txt +0 -0
  321. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN.Txt +0 -0
  322. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN_Node.Txt +0 -0
  323. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.DSV +0 -0
  324. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.dbl +0 -0
  325. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.DSV +0 -0
  326. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.dbl +0 -0
  327. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.DSV +0 -0
  328. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.dbl +0 -0
  329. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/DSSViewIntercom.Txt +0 -0
  330. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Node_BusXY.csv +0 -0
  331. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt.dss +0 -0
  332. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_EXP_ElemPowers.CSV +0 -0
  333. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.DSV +0 -0
  334. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.dbl +0 -0
  335. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power_elem_kVA.txt +0 -0
  336. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEELineCodes.dss +0 -0
  337. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/branch_data.csv +0 -0
  338. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/bus_data.csv +0 -0
  339. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/cap_data.csv +0 -0
  340. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/gen_data.csv +0 -0
  341. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/BalancedLoads.dss +0 -0
  342. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/BusCoords.dss +0 -0
  343. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/CableData.dss +0 -0
  344. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/CapControls.dss +0 -0
  345. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Capacitors.dss +0 -0
  346. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/DSSViewIntercom.Txt +0 -0
  347. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/EnergyStorage.dss +0 -0
  348. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Generators.dss +0 -0
  349. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LatLongCoords.dss +0 -0
  350. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LineCodes.dss +0 -0
  351. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LineConstantsCode.DSS +0 -0
  352. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LineGeometry.dss +0 -0
  353. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesGeometry.dss +0 -0
  354. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesLineCodes.dss +0 -0
  355. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LoadXfmrCodes.dss +0 -0
  356. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Master-bal-initial-config.dss +0 -0
  357. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Master-unbal-initial-config.dss +0 -0
  358. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/PV_10pen_DSSPV.dss +0 -0
  359. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/PV_NN_100_DSSPV.dss +0 -0
  360. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/README.md +0 -0
  361. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Regulators.dss +0 -0
  362. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Elements.Txt +0 -0
  363. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_LineConstants.txt +0 -0
  364. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Mon_mon1_1.csv +0 -0
  365. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.DSV +0 -0
  366. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.dbl +0 -0
  367. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power_elem_kVA.txt +0 -0
  368. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Transformers.dss +0 -0
  369. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/TriplexLineCodes.dss +0 -0
  370. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/TriplexLines.dss +0 -0
  371. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/UnbalancedLoads.dss +0 -0
  372. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/WireData.dss +0 -0
  373. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/BalancedLoads.dss +0 -0
  374. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/BusCoords.dss +0 -0
  375. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/CableData.dss +0 -0
  376. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/CapControls.dss +0 -0
  377. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Capacitors.dss +0 -0
  378. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/DSSViewIntercom.Txt +0 -0
  379. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/EnergyStorage.dss +0 -0
  380. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Generators.dss +0 -0
  381. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LatLongCoords.dss +0 -0
  382. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LineCodes.dss +0 -0
  383. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LineConstantsCode.DSS +0 -0
  384. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LineGeometry.dss +0 -0
  385. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesGeometry.dss +0 -0
  386. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesLineCodes.dss +0 -0
  387. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LoadXfmrCodes.dss +0 -0
  388. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Master-bal-initial-config.dss +0 -0
  389. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Master-unbal-initial-config.dss +0 -0
  390. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/PV_10pen_DSSPV.dss +0 -0
  391. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/PV_NN_100_DSSPV.dss +0 -0
  392. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/README.md +0 -0
  393. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Regulators.dss +0 -0
  394. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Elements.Txt +0 -0
  395. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_LineConstants.txt +0 -0
  396. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Mon_mon1_1.csv +0 -0
  397. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.DSV +0 -0
  398. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.dbl +0 -0
  399. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power_elem_kVA.txt +0 -0
  400. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Transformers.dss +0 -0
  401. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/TriplexLineCodes.dss +0 -0
  402. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/TriplexLines.dss +0 -0
  403. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/UnbalancedLoads.dss +0 -0
  404. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/WireData.dss +0 -0
  405. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/minimal_triplex/minimal_triplex.dss +0 -0
  406. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/Line.txt +0 -0
  407. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/Load.txt +0 -0
  408. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/MyLineCodes.txt +0 -0
  409. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/ieee123master_base.dss +0 -0
  410. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Buscoords.dss +0 -0
  411. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Intermediates.txt +0 -0
  412. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/LineCodes.dss +0 -0
  413. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Lines.dss +0 -0
  414. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/LoadShapes.dss +0 -0
  415. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Loads.dss +0 -0
  416. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Master.dss +0 -0
  417. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/PVSystems.dss +0 -0
  418. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/SMART-DS_version.txt +0 -0
  419. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Transformers.dss +0 -0
  420. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/Summary_data.csv +0 -0
  421. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/blown_fuses.csv +0 -0
  422. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/de-energized_nodes.csv +0 -0
  423. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_line_overloads.csv +0 -0
  424. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_over_voltages.csv +0 -0
  425. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_transformer_overloads.csv +0 -0
  426. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_under_voltages.csv +0 -0
  427. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_voltages.csv +0 -0
  428. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_histogram.png +0 -0
  429. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_percentiles.png +0 -0
  430. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_15_180.csv +0 -0
  431. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_15_225.csv +0 -0
  432. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_180.csv +0 -0
  433. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_225.csv +0 -0
  434. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_90.csv +0 -0
  435. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_35_135.csv +0 -0
  436. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_16017_pu.csv +0 -0
  437. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17146_pu.csv +0 -0
  438. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17950_pu.csv +0 -0
  439. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_1835_pu.csv +0 -0
  440. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19648_pu.csv +0 -0
  441. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19955_pu.csv +0 -0
  442. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_20964_pu.csv +0 -0
  443. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22499_pu.csv +0 -0
  444. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22635_pu.csv +0 -0
  445. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_2581_pu.csv +0 -0
  446. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29069_pu.csv +0 -0
  447. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29376_pu.csv +0 -0
  448. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29596_pu.csv +0 -0
  449. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31655_pu.csv +0 -0
  450. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31818_pu.csv +0 -0
  451. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_32244_pu.csv +0 -0
  452. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33164_pu.csv +0 -0
  453. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33792_pu.csv +0 -0
  454. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8445_pu.csv +0 -0
  455. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8470_pu.csv +0 -0
  456. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_16017_pu.csv +0 -0
  457. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17146_pu.csv +0 -0
  458. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17950_pu.csv +0 -0
  459. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_1835_pu.csv +0 -0
  460. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19648_pu.csv +0 -0
  461. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19955_pu.csv +0 -0
  462. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_20964_pu.csv +0 -0
  463. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22499_pu.csv +0 -0
  464. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22635_pu.csv +0 -0
  465. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_2581_pu.csv +0 -0
  466. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29069_pu.csv +0 -0
  467. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29376_pu.csv +0 -0
  468. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29596_pu.csv +0 -0
  469. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31655_pu.csv +0 -0
  470. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31818_pu.csv +0 -0
  471. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_32244_pu.csv +0 -0
  472. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33164_pu.csv +0 -0
  473. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33792_pu.csv +0 -0
  474. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8445_pu.csv +0 -0
  475. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8470_pu.csv +0 -0
  476. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_10747_pu.csv +0 -0
  477. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_1077_pu.csv +0 -0
  478. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_13334_pu.csv +0 -0
  479. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14588_pu.csv +0 -0
  480. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14705_pu.csv +0 -0
  481. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_3216_pu.csv +0 -0
  482. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_6157_pu.csv +0 -0
  483. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_7380_pu.csv +0 -0
  484. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_10747_pu.csv +0 -0
  485. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_1077_pu.csv +0 -0
  486. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_13334_pu.csv +0 -0
  487. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14588_pu.csv +0 -0
  488. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14705_pu.csv +0 -0
  489. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_3216_pu.csv +0 -0
  490. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_6157_pu.csv +0 -0
  491. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_7380_pu.csv +0 -0
  492. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/sensors/reactive_ids.json +0 -0
  493. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/sensors/real_ids.json +0 -0
  494. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/sensors/voltage_ids.json +0 -0
  495. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line/main.dss +0 -0
  496. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line_unbal_line/main.dss +0 -0
  497. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line_unbal_load/main.dss +0 -0
  498. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line_unbal_load_unbal_line/main.dss +0 -0
  499. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_reg/main.dss +0 -0
  500. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/triplex_3ph/triplex_3ph.dss +0 -0
  501. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cases/dss/triplex_pv/triplex_pv.dss +0 -0
  502. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/__init__.py +0 -0
  503. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/cim_to_csv_converter.py +0 -0
  504. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/__init__.py +0 -0
  505. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/base_processor.py +0 -0
  506. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/bus_processor.py +0 -0
  507. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/capacitor_processor.py +0 -0
  508. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/generator_processor.py +0 -0
  509. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/line_processor.py +0 -0
  510. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/regulator_processor.py +0 -0
  511. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/switch_processor.py +0 -0
  512. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/transformer_processor.py +0 -0
  513. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/utils/__init__.py +0 -0
  514. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/utils/phase_utils.py +0 -0
  515. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/validators/__init__.py +0 -0
  516. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/cim_importer/validators/topology_validator.py +0 -0
  517. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/__init__.py +0 -0
  518. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/ADMM_MATH_REPORT.md +0 -0
  519. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/ENAPP_MATH_REPORT.md +0 -0
  520. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/__init__.py +0 -0
  521. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/admm_agents.py +0 -0
  522. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/boundary.py +0 -0
  523. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/decompose.py +0 -0
  524. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/enapp copy.py +0 -0
  525. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/enapp_agents.py +0 -0
  526. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/execution.py +0 -0
  527. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/messaging.py +0 -0
  528. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/penalties.py +0 -0
  529. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/spatial/schedule.py +0 -0
  530. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/temporal/__init__.py +0 -0
  531. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/temporal/objectives.py +0 -0
  532. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/temporal/tenapp_1o.py +0 -0
  533. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/temporal/tenapp_admm.py +0 -0
  534. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/temporal/tenapp_aprx.py +0 -0
  535. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/distributed/temporal/utils.py +0 -0
  536. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/dss_importer/__init__.py +0 -0
  537. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/dss_importer/dss_to_csv_converter.py +0 -0
  538. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/fbs.py +0 -0
  539. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/__init__.py +0 -0
  540. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/base.py +0 -0
  541. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/binary_variable_notes.md +0 -0
  542. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist.py +0 -0
  543. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_capacitor_mi.py +0 -0
  544. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_capacitor_regulator_mi.py +0 -0
  545. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_loads.py +0 -0
  546. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_p_gen.py +0 -0
  547. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_q_gen.py +0 -0
  548. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_regulator_mi.py +0 -0
  549. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/__init__.py +0 -0
  550. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/base_mp.py +0 -0
  551. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/lindist_capacitor_mi_mp.py +0 -0
  552. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/lindist_loads_mp.py +0 -0
  553. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/lindist_mp.py +0 -0
  554. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/objectives.py +0 -0
  555. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/pyomo_solver.py +0 -0
  556. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/readme.md +0 -0
  557. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/solvers.py +0 -0
  558. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/__init__.py +0 -0
  559. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/decompose.py +0 -0
  560. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/enapp.py +0 -0
  561. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/objectives.py +0 -0
  562. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/matrix_models/solvers.py +0 -0
  563. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/plot.py +0 -0
  564. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/__init__.py +0 -0
  565. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/constraints.py +0 -0
  566. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/factories.py +0 -0
  567. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/lindist.py +0 -0
  568. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/nl_branchflow.py +0 -0
  569. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/nl_branchflow_prebuilt.py +0 -0
  570. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/objectives.py +0 -0
  571. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/protocol.py +0 -0
  572. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/results.py +0 -0
  573. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/slack_constraints.py +0 -0
  574. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/solvers.py +0 -0
  575. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/results.py +0 -0
  576. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/utils/__init__.py +0 -0
  577. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/utils/call_recorder.py +0 -0
  578. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/utils/input_handlers.py +0 -0
  579. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/utils/kcl_check.py +0 -0
  580. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/utils/ngon.py +0 -0
  581. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/utils/query_interface.py +0 -0
  582. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/utils/results_comparison.py +0 -0
  583. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/validators.py +0 -0
  584. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/wrappers/__init__.py +0 -0
  585. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/wrappers/base.py +0 -0
  586. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/wrappers/matrix_bess_wrapper.py +0 -0
  587. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/src/distopf/wrappers/matrix_wrapper.py +0 -0
  588. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/__init__.py +0 -0
  589. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/conftest.py +0 -0
  590. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/data/IEEE13.xml +0 -0
  591. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/branch_data.csv +0 -0
  592. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/bus_data.csv +0 -0
  593. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/cap_data.csv +0 -0
  594. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/gen_data.csv +0 -0
  595. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/reg_data.csv +0 -0
  596. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/integration/__init__.py +0 -0
  597. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/integration/test_full_conversion.py +0 -0
  598. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/integration/test_impedance_comparison.py +0 -0
  599. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/__init__.py +0 -0
  600. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_cim_to_csv_helpser.py +0 -0
  601. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_cim_to_csv_linking.py +0 -0
  602. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_converter_run.py +0 -0
  603. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_phase_utils.py +0 -0
  604. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_processors.py +0 -0
  605. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_reg_transformer_small.py +0 -0
  606. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_regulator_impedances.py +0 -0
  607. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_topology_validator.py +0 -0
  608. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_transformer_tank_impedances.py +0 -0
  609. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/dss_converter/__init__.py +0 -0
  610. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/dss_converter/integration/__init__.py +0 -0
  611. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/dss_converter/integration/test_dss_converter_integration.py +0 -0
  612. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/dss_converter/integration/test_triplex_lindist.py +0 -0
  613. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/dss_converter/unit/__init__.py +0 -0
  614. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_dss_converter.py +0 -0
  615. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_transformer.py +0 -0
  616. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_triplex_converter.py +0 -0
  617. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_triplex_pv.py +0 -0
  618. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/integration_references.json +0 -0
  619. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/pyomo_models/test_dual_extraction.py +0 -0
  620. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/pyomo_models/test_pyomo_lindist.py +0 -0
  621. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_admm_agents.py +0 -0
  622. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_backends.py +0 -0
  623. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_case.py +0 -0
  624. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_enapp_integration.py +0 -0
  625. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_exports.py +0 -0
  626. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_integration_snapshots.py +0 -0
  627. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_matrix_models.py +0 -0
  628. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_results.py +0 -0
  629. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_smoke.py +0 -0
  630. {distopf-1.1.0.dev3 → distopf-1.1.0.dev4}/tests/test_utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: distopf
3
- Version: 1.1.0.dev3
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>
@@ -127,19 +127,21 @@ case = opf.create_case(opf.CASES_DIR / "csv" / "ieee13")
127
127
  result = case.run_enapp(
128
128
  area_info=area_info,
129
129
  objective="substation_power",
130
- parallel=False,
130
+ parallel=True,
131
131
  max_iterations=25,
132
132
  )
133
133
  ```
134
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):
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):
136
138
 
137
139
  ```python
138
140
  result.save("results/ieee13-enapp")
139
141
  replayed = opf.replay("results/ieee13-enapp/run_config.json")
140
142
  ```
141
143
 
142
- Custom objective callables and solve/iteration callbacks are intentionally marked non-replayable because they cannot be reconstructed from JSON.
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.
143
145
 
144
146
 
145
147
 
@@ -168,6 +170,27 @@ Use `formulation="branchflow"`.
168
170
  - **Speed**: Slower than linear, but more accurate
169
171
  - **Accuracy**: Nonlinear power flow representation
170
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
+
171
194
  #### Continuous Optimization (IPOPT)
172
195
  For continuous optimization without discrete controls:
173
196
 
@@ -210,7 +233,7 @@ result = case.run_opf(wrapper="matrix_bess", objective="loss")
210
233
  #### Wrapper Comparison
211
234
  | Feature | Matrix/Matrix BESS | Pyomo |
212
235
  |---------|---|---|
213
- | Model Type | LinDistFlow (linear) | LinDistFlow or Non-Linear BranchFlow |
236
+ | Model Type | LinDistFlow (linear) | LinDistFlow, BranchFlow, or SOCP-relaxed BranchFlow |
214
237
  | Formulation | Matrix-based | Algebraic equations |
215
238
  | Solver API | Scipy or CVXPY | Pyomo |
216
239
  | Prefered Solver | HiGHs or Clarabel | IPOPT, Gurobi, Knitro |
@@ -228,7 +251,7 @@ DistOPF supports multiple optimization objectives for distribution system OPF:
228
251
  | **Substation Power** | `"substation"`, `"substation_power"` | Pyomo, Matrix | Minimize power imported from substation |
229
252
  | **Voltage Deviation** | `"voltage_deviation"` | Pyomo | Minimize deviations from nominal voltage (1.0 p.u.) |
230
253
  | **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Pyomo | Minimize DER curtailment |
231
- | **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 |
232
255
 
233
256
  #### Cost Minimization with Price Data
234
257
 
@@ -103,19 +103,21 @@ case = opf.create_case(opf.CASES_DIR / "csv" / "ieee13")
103
103
  result = case.run_enapp(
104
104
  area_info=area_info,
105
105
  objective="substation_power",
106
- parallel=False,
106
+ parallel=True,
107
107
  max_iterations=25,
108
108
  )
109
109
  ```
110
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):
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):
112
114
 
113
115
  ```python
114
116
  result.save("results/ieee13-enapp")
115
117
  replayed = opf.replay("results/ieee13-enapp/run_config.json")
116
118
  ```
117
119
 
118
- Custom objective callables and solve/iteration callbacks are intentionally marked non-replayable because they cannot be reconstructed from JSON.
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.
119
121
 
120
122
 
121
123
 
@@ -144,6 +146,27 @@ Use `formulation="branchflow"`.
144
146
  - **Speed**: Slower than linear, but more accurate
145
147
  - **Accuracy**: Nonlinear power flow representation
146
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
+
147
170
  #### Continuous Optimization (IPOPT)
148
171
  For continuous optimization without discrete controls:
149
172
 
@@ -186,7 +209,7 @@ result = case.run_opf(wrapper="matrix_bess", objective="loss")
186
209
  #### Wrapper Comparison
187
210
  | Feature | Matrix/Matrix BESS | Pyomo |
188
211
  |---------|---|---|
189
- | Model Type | LinDistFlow (linear) | LinDistFlow or Non-Linear BranchFlow |
212
+ | Model Type | LinDistFlow (linear) | LinDistFlow, BranchFlow, or SOCP-relaxed BranchFlow |
190
213
  | Formulation | Matrix-based | Algebraic equations |
191
214
  | Solver API | Scipy or CVXPY | Pyomo |
192
215
  | Prefered Solver | HiGHs or Clarabel | IPOPT, Gurobi, Knitro |
@@ -204,7 +227,7 @@ DistOPF supports multiple optimization objectives for distribution system OPF:
204
227
  | **Substation Power** | `"substation"`, `"substation_power"` | Pyomo, Matrix | Minimize power imported from substation |
205
228
  | **Voltage Deviation** | `"voltage_deviation"` | Pyomo | Minimize deviations from nominal voltage (1.0 p.u.) |
206
229
  | **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Pyomo | Minimize DER curtailment |
207
- | **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 |
208
231
 
209
232
  #### Cost Minimization with Price Data
210
233
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "distopf"
3
- version = "1.1.0.dev3"
3
+ version = "1.1.0.dev4"
4
4
  description = "A package for solving unbalanced three-phase distribution system optimal power flow problems."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -59,6 +59,12 @@ _FORMULATION_REGISTRY: dict[str, dict] = {
59
59
  "model_type": "branchflow",
60
60
  "compatible_wrappers": ["pyomo"],
61
61
  },
62
+ # Pyomo SOCP relaxation of BranchFlow (NLP/IPOPT path)
63
+ "socp": {
64
+ "default_wrapper": "pyomo",
65
+ "model_type": "socp",
66
+ "compatible_wrappers": ["pyomo"],
67
+ },
62
68
  # LinDistFlow — supported by both pyomo (default) and matrix
63
69
  "lindist": {
64
70
  "default_wrapper": "pyomo",
@@ -500,13 +506,14 @@ class Case:
500
506
  Solver wrapper to use:
501
507
  - "matrix": CVXPY/CLARABEL (fast, convex problems only)
502
508
  - "matrix_bess": Multi-period matrix model (supports batteries, schedules)
503
- - "pyomo": Pyomo/IPOPT (NLP-capable, supports lindist and branchflow)
509
+ - "pyomo": Pyomo/IPOPT (NLP-capable, supports lindist, branchflow, and socp)
504
510
  - None: Auto-selected from ``formulation``, or defaults to "pyomo"
505
511
  formulation : str, optional
506
512
  Math formulation to use. Auto-selects the appropriate wrapper when
507
513
  ``wrapper`` is not specified. Options:
508
514
  - "lindist": Linear DistFlow (pyomo default; also in matrix)
509
515
  - "branchflow": Nonlinear BranchFlow (pyomo + IPOPT/MINLP)
516
+ - "socp": SOCP relaxation of BranchFlow (pyomo + IPOPT/MINLP)
510
517
  - "lindist_cap_mi": LinDist + capacitor MILP (matrix)
511
518
  - "lindist_reg_mi": LinDist + regulator MILP (matrix)
512
519
  - "lindist_cap_reg_mi": LinDist + capacitor+regulator MILP (matrix)
@@ -1244,7 +1251,6 @@ def replay(run_config_path: Path | str):
1244
1251
  "Distributed replay does not support solve_callback or "
1245
1252
  "iteration_callback"
1246
1253
  )
1247
- arguments["parallel"] = False
1248
1254
  return getattr(case, method)(**arguments)
1249
1255
 
1250
1256
 
@@ -1163,6 +1163,25 @@ def add_current_constraint1(m: LindistModelProtocol) -> None:
1163
1163
 
1164
1164
  m.current_constraint = pyo.Constraint(m.branch_phase_set, m.time_set, rule=_rule1)
1165
1165
 
1166
+ def add_current_constraint1_relaxed(m: LindistModelProtocol) -> None:
1167
+ def _rule1(m: LindistModelProtocol, fb, tb, phases, t):
1168
+ ph = _parse_phases(phases)[0]
1169
+ # Use v2_reg for regulator branches
1170
+ if (fb, tb, ph) in m.reg_phase_set:
1171
+ return (
1172
+ m.p_flow[fb, tb, ph, t] ** 2 + m.q_flow[fb, tb, ph, t] ** 2
1173
+ <= m.v2_reg[fb, tb, ph, t] * m.l_flow[fb, tb, ph + ph, t]
1174
+ )
1175
+ fb_ph = getattr(m, "primary_phase_map", {}).get((fb, tb))
1176
+ if fb_ph is None:
1177
+ fb_ph = ph
1178
+ return (
1179
+ m.p_flow[fb, tb, ph, t] ** 2 + m.q_flow[fb, tb, ph, t] ** 2
1180
+ <= m.v2[fb, fb_ph, t] * m.l_flow[fb, tb, ph + ph, t]
1181
+ )
1182
+
1183
+ m.current_constraint = pyo.Constraint(m.branch_phase_set, m.time_set, rule=_rule1)
1184
+
1166
1185
 
1167
1186
  def add_current_constraint1_downstream_power(m: LindistModelProtocol) -> None:
1168
1187
  def _rule1(m: LindistModelProtocol, fb, tb, phases, t):
@@ -1216,6 +1235,7 @@ def add_nlp_constraints(
1216
1235
  reg_tap_change_limit: int | None = None,
1217
1236
  free_swing_voltage: bool = False,
1218
1237
  free_boundary_loads: bool = False,
1238
+ socp_relaxation: bool = False,
1219
1239
  ) -> None:
1220
1240
  """
1221
1241
  Add all constraints for the nonlinear BranchFlow model.
@@ -1304,5 +1324,9 @@ def add_nlp_constraints(
1304
1324
  add_circular_battery_constraints_pq_control(m)
1305
1325
 
1306
1326
  # Current constraints
1307
- add_current_constraint1(m)
1308
- add_current_constraint2(m)
1327
+ if socp_relaxation:
1328
+ add_current_constraint1_relaxed(m)
1329
+ add_current_constraint2_relaxed(m)
1330
+ else:
1331
+ add_current_constraint1(m)
1332
+ add_current_constraint2(m)
@@ -1,7 +1,7 @@
1
1
  """Pyomo wrapper for OPF (IPOPT solver).
2
2
 
3
- Supports both LinDistFlow (linear) and BranchFlow (nonlinear) models
4
- via the `model_type` parameter.
3
+ Supports LinDistFlow plus the nonlinear BranchFlow and SOCP-relaxed
4
+ BranchFlow models via the `model_type` parameter.
5
5
  """
6
6
 
7
7
  from __future__ import annotations
@@ -18,9 +18,10 @@ if TYPE_CHECKING:
18
18
  class PyomoWrapper(Wrapper):
19
19
  """Pyomo/IPOPT wrapper for OPF optimization.
20
20
 
21
- Supports two model types:
21
+ Supports three model types:
22
22
  - "lindist" (default): LinDistFlow linear approximation
23
23
  - "branchflow": Nonlinear BranchFlow model (NLP)
24
+ - "socp": SOCP relaxation of the BranchFlow model
24
25
  """
25
26
 
26
27
  def solve(
@@ -47,16 +48,18 @@ class PyomoWrapper(Wrapper):
47
48
  **kwargs
48
49
  Additional options:
49
50
  - model_type : str, default "lindist"
50
- "lindist" for LinDistFlow, "branchflow" for nonlinear BranchFlow.
51
+ "lindist" for LinDistFlow, "branchflow" for nonlinear BranchFlow,
52
+ or "socp" for its SOCP relaxation.
51
53
  - circular_constraints : bool
52
- Use circular (quadratic) constraints. Default False for lindist, True for branchflow.
54
+ Use circular (quadratic) constraints. Default False for lindist,
55
+ True for branchflow and socp.
53
56
  - thermal_constraints : bool, default False
54
57
  Add thermal limit constraints on branch power flows.
55
58
  - equality_only : bool, default False (lindist only)
56
59
  Only add equality constraints (power flow, voltage drop).
57
60
  - reg_tap_change_limit : int or None (lindist only)
58
61
  Max tap change per timestep (only if control_regulators=True)
59
- - initialize : str or None (branchflow only)
62
+ - initialize : str or None (branchflow/socp only)
60
63
  Warm-start strategy: 'fbs' to initialize from FBS results.
61
64
  - solver : str, default 'ipopt'
62
65
  Solver to use. 'ipopt' for continuous, 'bonmin'/'couenne' for MINLP.
@@ -72,12 +75,13 @@ class PyomoWrapper(Wrapper):
72
75
 
73
76
  model_type = kwargs.pop("model_type", "lindist")
74
77
 
75
- if model_type == "branchflow":
78
+ if model_type in ("branchflow", "socp"):
76
79
  return self._solve_branchflow(
77
80
  objective=objective,
78
81
  control_regulators=control_regulators,
79
82
  control_capacitors=control_capacitors,
80
83
  raw_result=raw_result,
84
+ socp_relaxation=model_type == "socp",
81
85
  **kwargs,
82
86
  )
83
87
  return self._solve_lindist(
@@ -209,12 +213,13 @@ class PyomoWrapper(Wrapper):
209
213
  raw_result,
210
214
  **kwargs,
211
215
  ):
212
- """Solve using nonlinear BranchFlow model."""
216
+ """Solve using nonlinear BranchFlow or its SOCP relaxation."""
213
217
  from distopf.pyomo_models.nl_branchflow import create_nl_branchflow_model
214
218
  from distopf.pyomo_models.constraints_nlp import add_nlp_constraints
215
219
  from distopf.pyomo_models.solvers import solve
216
220
  import pyomo.environ as pyo # type: ignore[import-untyped]
217
221
 
222
+ socp_relaxation = kwargs.pop("socp_relaxation", False)
218
223
  circular_constraints = kwargs.pop("circular_constraints", True)
219
224
  thermal_constraints = kwargs.pop("thermal_constraints", False)
220
225
  initialize = kwargs.pop("initialize", "fbs")
@@ -233,8 +238,9 @@ class PyomoWrapper(Wrapper):
233
238
  )
234
239
  if (control_regulators or control_capacitors) and solver_name == "ipopt":
235
240
  raise ValueError(
236
- "Discrete controls (control_regulators/control_capacitors) require a MINLP solver. "
237
- "Use solver='bonmin' or solver='couenne', or disable discrete controls."
241
+ "Discrete controls (control_regulators/control_capacitors) "
242
+ "require a MINLP solver. Use solver='bonmin' or "
243
+ "solver='couenne', or disable discrete controls."
238
244
  )
239
245
 
240
246
  self.model = create_nl_branchflow_model(self.case)
@@ -245,6 +251,7 @@ class PyomoWrapper(Wrapper):
245
251
  thermal_constraints=thermal_constraints,
246
252
  control_regulators=control_regulators,
247
253
  control_capacitors=control_capacitors,
254
+ socp_relaxation=socp_relaxation,
248
255
  free_swing_voltage=free_swing_voltage,
249
256
  free_boundary_loads=free_boundary_loads,
250
257
  )
@@ -500,8 +507,12 @@ class PyomoWrapper(Wrapper):
500
507
  "curtail": objectives.generation_curtailment_objective_rule,
501
508
  "curtail_min": objectives.generation_curtailment_objective_rule,
502
509
  "curtailment": objectives.generation_curtailment_objective_rule,
503
- "generation_cost_substation_penalty": objectives.generation_cost_with_substation_quadratic_penalty_objective_rule,
504
- "gen_cost_substation_penalty": objectives.generation_cost_with_substation_quadratic_penalty_objective_rule,
510
+ "generation_cost_substation_penalty": (
511
+ objectives.generation_cost_with_substation_quadratic_penalty_objective_rule
512
+ ),
513
+ "gen_cost_substation_penalty": (
514
+ objectives.generation_cost_with_substation_quadratic_penalty_objective_rule
515
+ ),
505
516
  "cost": objectives.cost_minimization_rule,
506
517
  "cost_min": objectives.cost_minimization_rule,
507
518
  }
@@ -54,7 +54,7 @@ def test_admm_scaled_option_is_recorded_and_replayed(tmp_path):
54
54
  area_info=AREA_INFO,
55
55
  objective="substation_power",
56
56
  scaled=False,
57
- parallel=False,
57
+ parallel=True,
58
58
  max_iterations=1,
59
59
  control_regulators=False,
60
60
  solver="ipopt",
@@ -63,16 +63,19 @@ def test_admm_scaled_option_is_recorded_and_replayed(tmp_path):
63
63
 
64
64
  config = json.loads((tmp_path / "run_config.json").read_text())
65
65
  assert config["call"]["arguments"]["scaled"] is False
66
+ assert config["call"]["arguments"]["parallel"] is True
66
67
 
67
68
  replayed = opf.replay(tmp_path / "run_config.json")
68
69
  assert replayed.metadata["call"]["arguments"]["scaled"] is False
70
+ assert replayed.metadata["call"]["arguments"]["parallel"] is True
71
+ assert replayed.raw_result["admm_parallel_used"] is True
69
72
 
70
73
 
71
74
  def test_enapp_save_and_replay(tmp_path):
72
75
  result = _case().run_enapp(
73
76
  area_info=AREA_INFO,
74
77
  objective="substation_power",
75
- parallel=False,
78
+ parallel=True,
76
79
  max_iterations=1,
77
80
  control_regulators=False,
78
81
  solver="ipopt",
@@ -82,12 +85,15 @@ def test_enapp_save_and_replay(tmp_path):
82
85
  config = json.loads((tmp_path / "run_config.json").read_text())
83
86
  assert config["call"]["method"] == "run_enapp"
84
87
  assert config["call"]["replayable"] is True
88
+ assert config["call"]["arguments"]["parallel"] is True
85
89
  assert config["distributed"]["solver"] == "enapp"
86
90
  assert config["distributed"]["area_info"] == AREA_INFO
87
91
 
88
92
  replayed = opf.replay(tmp_path / "run_config.json")
89
93
  assert replayed.metadata["distributed_solver"] == "enapp"
90
94
  assert replayed.metadata["area_info"] == AREA_INFO
95
+ assert replayed.metadata["call"]["arguments"]["parallel"] is True
96
+ assert replayed.raw_result["enapp_parallel_used"] is True
91
97
 
92
98
 
93
99
  def test_distributed_callbacks_are_not_replayable(tmp_path):
@@ -16,10 +16,25 @@ def small_case():
16
16
 
17
17
 
18
18
  class TestNlpWrapperSelection:
19
- """Test that formulation='branchflow' is properly registered and selectable."""
19
+ """Test that nonlinear Pyomo formulations are properly registered and selectable."""
20
+
21
+ def test_formulation_socp_routes_to_pyomo(self):
22
+ """SOCP formulation should select Pyomo and preserve its model type."""
23
+ from distopf.api import _resolve_wrapper
24
+
25
+ wrapper_cls, extra_kwargs = _resolve_wrapper(None, "socp")
26
+ assert wrapper_cls is PyomoWrapper
27
+ assert extra_kwargs == {"model_type": "socp"}
28
+
29
+ def test_formulation_socp_rejects_matrix_wrapper(self):
30
+ """SOCP is only implemented by the Pyomo wrapper."""
31
+ from distopf.api import _resolve_wrapper
32
+
33
+ with pytest.raises(ValueError, match="not compatible"):
34
+ _resolve_wrapper("matrix", "socp")
20
35
 
21
36
  def test_formulation_branchflow_routes_to_pyomo(self):
22
- """Test that 'branchflow' formulation resolves to PyomoWrapper with model_type."""
37
+ """BranchFlow formulation resolves to PyomoWrapper with model_type."""
23
38
  from distopf.api import _resolve_wrapper
24
39
 
25
40
  wrapper_cls, extra_kwargs = _resolve_wrapper(None, "branchflow")
@@ -57,6 +72,19 @@ class TestNlpModelCreation:
57
72
  assert hasattr(model, "power_balance_q")
58
73
  assert hasattr(model, "voltage_drop")
59
74
 
75
+ def test_add_nlp_constraints_socp_relaxes_current_constraints(self):
76
+ """SOCP mode should attach both relaxed current constraint families."""
77
+ # Use a multiphase case because the pairwise current constraint set is
78
+ # empty for the one-phase small_case fixture.
79
+ case = opf.create_case(opf.CASES_DIR / "csv" / "ieee13")
80
+ model = create_nl_branchflow_model(case)
81
+ add_nlp_constraints(model, socp_relaxation=True)
82
+
83
+ current = next(iter(model.current_constraint.values()))
84
+ current_sqr = next(iter(model.current_sqr_constraint.values()))
85
+ assert current.equality is False
86
+ assert current_sqr.equality is False
87
+
60
88
  def test_add_nlp_constraints_with_discrete_controls(self, small_case):
61
89
  """Test that discrete control constraints can be added."""
62
90
  model = create_nl_branchflow_model(
@@ -135,7 +163,23 @@ class TestNlpBackendSolverValidation:
135
163
 
136
164
 
137
165
  class TestNlpIntegration:
138
- """Integration tests for branchflow formulation with Case API."""
166
+ """Integration tests for nonlinear formulations with the Case API."""
167
+
168
+ def test_case_run_opf_with_socp_formulation_builds_nlp_path(
169
+ self, small_case, monkeypatch
170
+ ):
171
+ """Case API should route SOCP to the nonlinear Pyomo path."""
172
+ calls = {}
173
+
174
+ def fake_solve(self, **kwargs):
175
+ calls.update(kwargs)
176
+ return object()
177
+
178
+ monkeypatch.setattr(PyomoWrapper, "solve", fake_solve)
179
+ result = small_case.run_opf(formulation="socp", raw_result=True)
180
+
181
+ assert result is not None
182
+ assert calls["model_type"] == "socp"
139
183
 
140
184
  def test_case_run_opf_with_branchflow_formulation(self, small_case):
141
185
  """Test that Case.run_opf() accepts formulation='branchflow'."""
@@ -208,7 +252,7 @@ class TestNlpDecomposedBoundaries:
208
252
  FBS(decomposed_cases["area4"])
209
253
 
210
254
  def test_case_run_opf_branchflow_with_initialization(self, small_case):
211
- """Test that Case.run_opf() with formulation='branchflow' accepts initialize flag."""
255
+ """Case.run_opf() with BranchFlow accepts the initialize flag."""
212
256
  try:
213
257
  result = small_case.run_opf(
214
258
  formulation="branchflow", initialize="fbs", raw_result=False