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