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.
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/PKG-INFO +66 -4
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/README.md +64 -2
- distopf-1.1.0.dev4/examples/advanced/TEMPORAL_README.md +249 -0
- distopf-1.1.0.dev4/examples/advanced/debug_enapp_123.py +87 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/advanced/run_enapp.py +16 -28
- distopf-1.1.0.dev4/examples/advanced/run_enapp_123.py +111 -0
- distopf-1.1.0.dev4/examples/advanced/run_enapp_123_isolated.py +110 -0
- distopf-1.1.0.dev4/examples/advanced/run_enapp_123_spatiotemporal.py +102 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/advanced/run_enapp_refactor.py +9 -18
- distopf-1.1.0.dev4/examples/advanced/run_enapp_tenapp.py +263 -0
- distopf-1.1.0.dev4/examples/advanced/run_temporal_comparison.py +241 -0
- distopf-1.1.0.dev4/examples/advanced/run_temporal_quick.py +41 -0
- distopf-1.1.0.dev4/examples/advanced/run_temporal_tenapp.py +236 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/control_devices/test_regulator_mi.py +3 -4
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/notebooks/adding_generators.ipynb +126 -126
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/notebooks/adding_generators.py +0 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/notebooks/basic_power_flow_examples.ipynb +363 -363
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/notebooks/build_your_own_opf.ipynb +27 -26
- distopf-1.1.0.dev4/examples/notebooks/distopf_pesgm2026_tutorial.ipynb +37674 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/optimization/penalties.py +0 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/optimization/thermal_limits.py +0 -2
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_multiperiod.py +2 -2
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_nlp_123_comparison.py +0 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_nlp_13_comparison.py +0 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_regulator_control.py +0 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_time_comparison.py +2 -2
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/pyproject.toml +1 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/api.py +204 -15
- distopf-1.1.0.dev4/src/distopf/distributed/__init__.py +5 -0
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/ADMM_MATH_REPORT.md +800 -0
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/ENAPP_MATH_REPORT.md +605 -0
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/admm_agents.py +770 -0
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/boundary.py +198 -0
- {distopf-1.1.0.dev2/src/distopf/spatial_decomposition → distopf-1.1.0.dev4/src/distopf/distributed/spatial}/decompose.py +67 -17
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/enapp copy.py +1111 -0
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/enapp_agents.py +441 -0
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/execution.py +612 -0
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/messaging.py +223 -0
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/penalties.py +31 -0
- distopf-1.1.0.dev4/src/distopf/distributed/spatial/schedule.py +72 -0
- distopf-1.1.0.dev4/src/distopf/distributed/temporal/__init__.py +44 -0
- distopf-1.1.0.dev4/src/distopf/distributed/temporal/objectives.py +250 -0
- distopf-1.1.0.dev4/src/distopf/distributed/temporal/tenapp_1o.py +150 -0
- distopf-1.1.0.dev4/src/distopf/distributed/temporal/tenapp_admm.py +173 -0
- distopf-1.1.0.dev4/src/distopf/distributed/temporal/tenapp_aprx.py +149 -0
- distopf-1.1.0.dev4/src/distopf/distributed/temporal/utils.py +215 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/dss_importer/dss_to_csv_converter.py +5 -10
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/fbs.py +16 -10
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/base.py +5 -4
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/base_mp.py +5 -4
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/objectives.py +1 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/decompose.py +7 -11
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/enapp.py +2 -2
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/plot.py +130 -72
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/__init__.py +6 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/constraints.py +146 -2
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/constraints_nlp.py +69 -14
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/lindist.py +62 -8
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/nl_branchflow.py +21 -8
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/objectives.py +256 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/results.py +45 -0
- distopf-1.1.0.dev4/src/distopf/pyomo_models/slack_constraints.py +163 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/solvers.py +10 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/results.py +54 -9
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/call_recorder.py +3 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/kcl_check.py +1 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/validators.py +2 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/matrix_bess_wrapper.py +4 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/matrix_wrapper.py +5 -2
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/pyomo_wrapper.py +140 -43
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_triplex_pv.py +1 -1
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/pyomo_models/test_dual_extraction.py +0 -2
- distopf-1.1.0.dev4/tests/test_admm_agents.py +254 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_case.py +1 -4
- distopf-1.1.0.dev4/tests/test_distributed_api.py +119 -0
- distopf-1.1.0.dev4/tests/test_enapp_integration.py +276 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_nlp_backend.py +105 -4
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_results.py +30 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/uv.lock +36 -36
- distopf-1.1.0.dev2/examples/notebooks/distopf_pesgm2026_tutorial.ipynb +0 -116099
- distopf-1.1.0.dev2/src/distopf/spatial_decomposition/enapp.py +0 -581
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/.github/copilot-instructions.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/.github/skills/run-opf/SKILL.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/.github/workflows/lint.yml +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/.github/workflows/pypi-publish.yml +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/.gitignore +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/2026-04-21-distopf_2-triplex-agent.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/DISCLAIMER.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/LICENSE.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/column_migration.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/docs/STYLE_GUIDE.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/docs/architecture.puml +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/README.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/advanced/profile_matrix.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/advanced/temp_test.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/basics/basic_optimal_power_flow.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/basics/basic_power_flow.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/basics/basic_power_flow_examples.html +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/basics/basic_power_flow_examples.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/control_devices/fbs13.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/control_devices/reg_cap_example.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/cim_example.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/compare_cim_case.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/dss_converter_test.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/dss_examples.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/dss_test_loss.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/data_import/dss_test_results.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/optimization/extract_duals.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/optimization/penalty_example.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/build_your_own_opf.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/build_your_own_opf_static.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/nlp.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_dss_example.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_mi.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/pyomo/pyomo_tests.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/01_simple_power_flow.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/02_loss_minimization.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/03_voltage_optimization.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/04_comparing_wrappers.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/05_control_strategies.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/06_visualization_gallery.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/07_quick_start.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/08_reactive_power_importance.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/09_optimization_tradeoffs.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/10_working_with_results.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/examples/tutorials/11_fbs_power_flow.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/cim/IEEE123_PV.xml +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/cim/IEEE13.xml +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/battery_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/2Bus-1ph-batt/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/battery_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/3Bus-1ph-batt/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/battery_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/9500-primary-network/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/bat_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_30der/schedules.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/battery_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_alternate/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/bat_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/battery_data_v1.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee123_bat/schedules.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/battery_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee13_battery/reg_data.csv +0 -0
- /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
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee33/schedules.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee34/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/ieee9500_wye/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/minimal_triplex/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/smartds_small/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_3ph/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/csv/triplex_pv/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/2Bus/2Bus.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/2BusD/2Bus.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/2Bus_1phase/2Bus1ph.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/IEEE34_BusXY.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/IEEELineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod1.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod2.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_Curr_Elem.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_RegTaps.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34-2_VLN_Node.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34Mod1.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/ieee34Mod2.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/34Bus/nmsu_linecode2_ABC.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/3Bus/3Bus.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4Bus-DY-Bal.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Curr_Elem.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLL_Node.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLN_Node.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4Bus-GrdYD-Bal.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_Losses.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_VLN_Node.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-OYOD-Bal/4Bus-OYOD-Bal.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-OYOD-UnBal/4bus-OYOD-UnBal.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-YD-Bal/4Bus-YD-Bal.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-YY-Bal/4Bus-YY-Bal.DSS +0 -0
- {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
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4Bus-YYD/YYD-Master.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Expanded4WireDelta.pdf +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Kersting4wireIndMotor.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Lagging.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Leading.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/BalancedLoads.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/BusCoords.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/CableData.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/CapControls.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Capacitors.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/EnergyStorage.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Generators.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LatLongCoords.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LineGeometry.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesGeometry.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesLineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/LoadXfmrCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Loads_primary.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Master-unbal-initial-config.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Master.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/PVSystems_primary.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/PV_10pen_DSSPV.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/PV_NN_100_DSSPV.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/README.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Regulators.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/Transformers.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/TriplexLineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/TriplexLines.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/UnbalancedLoads.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/WireData.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/bus_info_temp.json +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/desktop.ini +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Isolated.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Loops.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/final9500node_VLN_Node.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/ieee9500bal.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/ieee9500unbal.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/9500-primary-network/xfmrs_info_triplex_nodes.json +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/BusCoords.dat +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/CircuitPlottingScripts.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/DSSGraph_Output.CSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEE123Loads.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEE123Master.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEE123Regulators.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/IEEELineCodes.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/P174_Run_SolarRamp.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/P174_Run_VoltageProfile.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/PV5sdata1.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/PaperLoadShape.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/RevRegTest.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/Run_IEEE123Bus.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/Run_YearlySim.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SetDailyLoadShape.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SolarRamp-Mack.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SolarRamp.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/SolarRamp.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/StorageRamp.CSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/WindRamp.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/WindRampRevRegTest.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Curr_Elem.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_BUSCOORDS.CSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_ElemPowers.CSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_LOADS.CSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_P_BYPHASE.CSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Elements.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_GenMeterOut.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Loops.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_seq_kVA.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_RegTaps.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN_Node.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Node_BusXY.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_EXP_ElemPowers.CSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/IEEELineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/BalancedLoads.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/BusCoords.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/CableData.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/CapControls.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Capacitors.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/EnergyStorage.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Generators.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LatLongCoords.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LineConstantsCode.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LineGeometry.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesGeometry.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesLineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/LoadXfmrCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Master-bal-initial-config.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Master-unbal-initial-config.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/PV_10pen_DSSPV.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/PV_NN_100_DSSPV.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/README.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Regulators.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Elements.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_LineConstants.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Mon_mon1_1.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/Transformers.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/TriplexLineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/TriplexLines.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/UnbalancedLoads.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_dss/WireData.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/BalancedLoads.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/BusCoords.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/CableData.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/CapControls.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Capacitors.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/EnergyStorage.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Generators.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LatLongCoords.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LineConstantsCode.DSS +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LineGeometry.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesGeometry.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesLineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/LoadXfmrCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Master-bal-initial-config.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Master-unbal-initial-config.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/PV_10pen_DSSPV.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/PV_NN_100_DSSPV.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/README.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Regulators.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Elements.Txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_LineConstants.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Mon_mon1_1.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.DSV +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.dbl +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/Transformers.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/TriplexLineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/TriplexLines.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/UnbalancedLoads.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/ieee9500_wye/WireData.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/minimal_triplex/minimal_triplex.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/Line.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/Load.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/MyLineCodes.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/rahul123/ieee123master_base.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Buscoords.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Intermediates.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/LineCodes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Lines.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/LoadShapes.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Loads.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Master.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/PVSystems.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/SMART-DS_version.txt +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/Transformers.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/Summary_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/blown_fuses.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/de-energized_nodes.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_line_overloads.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_over_voltages.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_transformer_overloads.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_under_voltages.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_voltages.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_histogram.png +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_percentiles.png +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_16017_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17146_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17950_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_1835_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19648_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19955_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_20964_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22499_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22635_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_2581_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29069_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29376_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29596_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31655_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31818_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_32244_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33164_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33792_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8445_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8470_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_16017_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17146_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17950_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_1835_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19648_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19955_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_20964_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22499_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22635_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_2581_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29069_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29376_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29596_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31655_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31818_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_32244_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33164_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33792_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8445_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8470_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_10747_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_1077_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_13334_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14588_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14705_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_3216_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_6157_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_7380_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_10747_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_1077_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_13334_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14588_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14705_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_3216_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_6157_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/profiles/res_kw_7380_pu.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/sensors/reactive_ids.json +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/sensors/real_ids.json +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/smartds_small/sensors/voltage_ids.json +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line/main.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line_unbal_line/main.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line_unbal_load/main.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_line_unbal_load_unbal_line/main.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/test_reg/main.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/triplex_3ph/triplex_3ph.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cases/dss/triplex_pv/triplex_pv.dss +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/cim_to_csv_converter.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/base_processor.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/bus_processor.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/capacitor_processor.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/generator_processor.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/line_processor.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/regulator_processor.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/switch_processor.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/processors/transformer_processor.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/utils/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/utils/phase_utils.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/validators/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/cim_importer/validators/topology_validator.py +0 -0
- {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
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/dss_importer/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/binary_variable_notes.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_capacitor_mi.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_capacitor_regulator_mi.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_loads.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_p_gen.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_q_gen.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/lindist_regulator_mi.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/lindist_capacitor_mi_mp.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/lindist_loads_mp.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/lindist_mp.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/pyomo_solver.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/readme.md +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/matrix_bess/solvers.py +0 -0
- {distopf-1.1.0.dev2/src/distopf → distopf-1.1.0.dev4/src/distopf/matrix_models/matrix_bess}/spatial_decomposition/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/objectives.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/matrix_models/solvers.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/factories.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/nl_branchflow_prebuilt.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/pyomo_models/protocol.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/input_handlers.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/ngon.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/query_interface.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/utils/results_comparison.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/src/distopf/wrappers/base.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/conftest.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/IEEE13.xml +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/branch_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/bus_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/cap_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/gen_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/data/ieee13/reg_data.csv +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/integration/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/integration/test_full_conversion.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/integration/test_impedance_comparison.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_cim_to_csv_helpser.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_cim_to_csv_linking.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_converter_run.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_phase_utils.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_processors.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_reg_transformer_small.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_regulator_impedances.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_topology_validator.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/cim_converter/unit/test_transformer_tank_impedances.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/integration/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/integration/test_dss_converter_integration.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/integration/test_triplex_lindist.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/__init__.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_dss_converter.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_transformer.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/dss_converter/unit/test_triplex_converter.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/integration_references.json +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/pyomo_models/test_pyomo_lindist.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_backends.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_exports.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_integration_snapshots.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_matrix_models.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_smoke.py +0 -0
- {distopf-1.1.0.dev2 → distopf-1.1.0.dev4}/tests/test_utilities.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: distopf
|
|
3
|
-
Version: 1.1.0.
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
55
|
-
|
|
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.
|
|
54
|
+
print(result_c.objective_value, " in ", result_c.solve_time)
|
|
63
55
|
result_enapp = solve_enapp(
|
|
64
|
-
|
|
65
|
-
|
|
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.
|
|
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 =
|
|
80
|
-
v_c =
|
|
81
|
-
print(
|
|
82
|
-
print(
|
|
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
|
|