distopf 1.1.0.dev4__tar.gz → 1.1.0.dev5__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.dev4 → distopf-1.1.0.dev5}/.gitignore +4 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/PKG-INFO +73 -21
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/README.md +70 -20
- distopf-1.1.0.dev5/docs/solver-failure-guide.md +52 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/README.md +23 -10
- distopf-1.1.0.dev5/examples/cli/example_ieee123_30der.toml +14 -0
- distopf-1.1.0.dev5/examples/cli/example_ieee123_bat.toml +16 -0
- distopf-1.1.0.dev5/examples/cli/example_ieee13.toml +31 -0
- distopf-1.1.0.dev5/examples/cli/example_scenario.toml +31 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/pyproject.toml +5 -1
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/__init__.py +12 -1
- distopf-1.1.0.dev5/src/distopf/cases/csv/ieee9500_feasible/bus_data.csv +5295 -0
- distopf-1.1.0.dev5/src/distopf/cases/csv/ieee9500_feasible/gen_data copy.csv +188 -0
- distopf-1.1.0.dev5/src/distopf/cases/csv/ieee9500_feasible/reg_data.csv +7 -0
- distopf-1.1.0.dev5/src/distopf/cli.py +919 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/fbs.py +425 -37
- distopf-1.1.0.dev5/src/distopf/pyomo_models/common_constraints.py +830 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/constraints_nlp.py +1 -0
- distopf-1.1.0.dev5/src/distopf/pyomo_models/lindist_constraints.py +263 -0
- distopf-1.1.0.dev5/src/distopf/pyomo_models/nl_bfm_constraints.py +418 -0
- distopf-1.1.0.dev5/src/distopf/pyomo_models/primary_lindist_constraints.py +182 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/results.py +1 -3
- distopf-1.1.0.dev5/src/distopf/utils/__init__.py +5 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/utils/results_comparison.py +77 -0
- distopf-1.1.0.dev5/src/distopf/utils/topology.py +90 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_case.py +3 -0
- distopf-1.1.0.dev5/tests/test_cli.py +744 -0
- distopf-1.1.0.dev5/tests/test_exact_replay_and_comparison.py +309 -0
- distopf-1.1.0.dev5/tests/test_fbs_replay.py +63 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_results.py +1 -3
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_utilities.py +33 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/uv.lock +89 -36
- distopf-1.1.0.dev4/src/distopf/cases/csv/ieee9500_wye/bus_data.csv +0 -5295
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/.github/copilot-instructions.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/.github/skills/run-opf/SKILL.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/.github/workflows/lint.yml +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/.github/workflows/pypi-publish.yml +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/2026-04-21-distopf_2-triplex-agent.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/DISCLAIMER.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/LICENSE.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/column_migration.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/docs/STYLE_GUIDE.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/docs/architecture.puml +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/TEMPORAL_README.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/debug_enapp_123.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/profile_matrix.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/run_enapp.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/run_enapp_123.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/run_enapp_123_isolated.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/run_enapp_123_spatiotemporal.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/run_enapp_refactor.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/run_enapp_tenapp.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/run_temporal_comparison.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/run_temporal_quick.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/run_temporal_tenapp.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/advanced/temp_test.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/basics/basic_optimal_power_flow.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/basics/basic_power_flow.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/basics/basic_power_flow_examples.html +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/basics/basic_power_flow_examples.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/control_devices/fbs13.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/control_devices/reg_cap_example.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/control_devices/test_regulator_mi.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/data_import/cim_example.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/data_import/compare_cim_case.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/data_import/dss_converter_test.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/data_import/dss_examples.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/data_import/dss_test_loss.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/data_import/dss_test_results.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/notebooks/adding_generators.ipynb +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/notebooks/adding_generators.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/notebooks/basic_power_flow_examples.ipynb +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/notebooks/build_your_own_opf.ipynb +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/notebooks/distopf_pesgm2026_tutorial.ipynb +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/optimization/extract_duals.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/optimization/penalties.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/optimization/penalty_example.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/optimization/thermal_limits.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/build_your_own_opf.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/build_your_own_opf_static.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/nlp.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/pyomo_dss_example.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/pyomo_mi.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/pyomo_multiperiod.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/pyomo_nlp_123_comparison.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/pyomo_nlp_13_comparison.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/pyomo_regulator_control.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/pyomo_tests.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/pyomo/pyomo_time_comparison.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/01_simple_power_flow.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/02_loss_minimization.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/03_voltage_optimization.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/04_comparing_wrappers.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/05_control_strategies.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/06_visualization_gallery.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/07_quick_start.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/08_reactive_power_importance.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/09_optimization_tradeoffs.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/10_working_with_results.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/examples/tutorials/11_fbs_power_flow.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/api.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/cim/IEEE123_PV.xml +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/cim/IEEE13.xml +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/2Bus-1ph-batt/battery_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/2Bus-1ph-batt/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/2Bus-1ph-batt/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/2Bus-1ph-batt/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/2Bus-1ph-batt/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/2Bus-1ph-batt/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/2Bus-1ph-batt/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/2Bus-1ph-batt/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/3Bus-1ph-batt/battery_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/3Bus-1ph-batt/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/3Bus-1ph-batt/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/3Bus-1ph-batt/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/3Bus-1ph-batt/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/3Bus-1ph-batt/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/3Bus-1ph-batt/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/3Bus-1ph-batt/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/battery_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500-primary-network/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500-primary-network/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500-primary-network/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500-primary-network/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/9500-primary-network/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_30der/bat_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_30der/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_30der/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_30der/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_30der/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_30der/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_30der/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_30der/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_30der/schedules.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_alternate/battery_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_alternate/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_alternate/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_alternate/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_alternate/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_alternate/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_alternate/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_alternate/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_bat/bat_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_bat/battery_data_v1.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_bat/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_bat/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_bat/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_bat/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_bat/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee123_bat/schedules.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13_battery/battery_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13_battery/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13_battery/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13_battery/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13_battery/default_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13_battery/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13_battery/pv_loadshape.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee13_battery/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee33/bat_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee33/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee33/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee33/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee33/schedules.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee34/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee34/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee34/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee34/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee34/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee9500/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee9500/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee9500/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee9500/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/ieee9500/reg_data.csv +0 -0
- {distopf-1.1.0.dev4/src/distopf/cases/csv/ieee9500_wye → distopf-1.1.0.dev5/src/distopf/cases/csv/ieee9500_feasible}/branch_data.csv +0 -0
- {distopf-1.1.0.dev4/src/distopf/cases/csv/ieee9500_wye → distopf-1.1.0.dev5/src/distopf/cases/csv/ieee9500_feasible}/cap_data.csv +0 -0
- {distopf-1.1.0.dev4/src/distopf/cases/csv/ieee9500_wye → distopf-1.1.0.dev5/src/distopf/cases/csv/ieee9500_feasible}/gen_data.csv +0 -0
- /distopf-1.1.0.dev4/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.dbl → /distopf-1.1.0.dev5/src/distopf/cases/csv/ieee9500_feasible/readme.md +0 -0
- /distopf-1.1.0.dev4/src/distopf/cases/csv/ieee9500_wye/reg_data.csv → /distopf-1.1.0.dev5/src/distopf/cases/csv/ieee9500_feasible/reg_data_orig.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/minimal_triplex/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/minimal_triplex/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/minimal_triplex/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/minimal_triplex/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/minimal_triplex/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/smartds_small/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/smartds_small/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/smartds_small/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/smartds_small/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/smartds_small/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_3ph/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_3ph/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_3ph/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_3ph/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_3ph/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_pv/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_pv/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_pv/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_pv/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/csv/triplex_pv/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/2Bus/2Bus.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/2BusD/2Bus.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/2Bus_1phase/2Bus1ph.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/IEEE34_BusXY.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/IEEELineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod1.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod2.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/ieee34-2_Curr_Elem.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/ieee34-2_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/ieee34-2_RegTaps.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/ieee34-2_VLN_Node.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/ieee34Mod1.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/ieee34Mod2.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/34Bus/nmsu_linecode2_ABC.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/3Bus/3Bus.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-DY-Bal/4Bus-DY-Bal.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Curr_Elem.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLL_Node.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLN_Node.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4Bus-GrdYD-Bal.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_Losses.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_VLN_Node.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-OYOD-Bal/4Bus-OYOD-Bal.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-OYOD-UnBal/4bus-OYOD-UnBal.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-YD-Bal/4Bus-YD-Bal.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-YY-Bal/4Bus-YY-Bal.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-YYD/Three Winding Transformer Test System-EPRI-2017-Rev4.docx +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4Bus-YYD/YYD-Master.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4wire-Delta/Expanded4WireDelta.pdf +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4wire-Delta/Kersting4wireIndMotor.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Lagging.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Leading.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/BalancedLoads.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/BusCoords.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/CableData.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/CapControls.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/Capacitors.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/EnergyStorage.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/Generators.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/LatLongCoords.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/LineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/LineGeometry.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesGeometry.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesLineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/LoadXfmrCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/Loads_primary.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/Master-unbal-initial-config.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/Master.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/PVSystems_primary.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/PV_10pen_DSSPV.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/PV_NN_100_DSSPV.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/README.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/Regulators.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/Transformers.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/TriplexLineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/TriplexLines.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/UnbalancedLoads.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/WireData.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/bus_info_temp.json +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/desktop.ini +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/final9500node_Isolated.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/final9500node_Loops.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/final9500node_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/final9500node_VLN_Node.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/ieee9500bal.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/ieee9500unbal.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/9500-primary-network/xfmrs_info_triplex_nodes.json +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/BusCoords.dat +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/CircuitPlottingScripts.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/DSSGraph_Output.CSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/IEEE123Loads.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/IEEE123Master.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/IEEE123Regulators.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/IEEELineCodes.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/P174_Run_SolarRamp.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/P174_Run_VoltageProfile.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/PV5sdata1.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/PaperLoadShape.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/RevRegTest.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/Run_IEEE123Bus.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/Run_YearlySim.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/SetDailyLoadShape.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/SolarRamp-Mack.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/SolarRamp.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/SolarRamp.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/StorageRamp.CSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/WindRamp.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/WindRampRevRegTest.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Curr_Elem.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_BUSCOORDS.CSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_ElemPowers.CSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_LOADS.CSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_P_BYPHASE.CSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Elements.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_GenMeterOut.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.DSV +0 -0
- /distopf-1.1.0.dev4/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.dbl → /distopf-1.1.0.dev5/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Loops.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_seq_kVA.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_RegTaps.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN_Node.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.DSV +0 -0
- /distopf-1.1.0.dev4/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.dbl → /distopf-1.1.0.dev5/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.DSV +0 -0
- /distopf-1.1.0.dev4/src/distopf/distributed/spatial/__init__.py → /distopf-1.1.0.dev5/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/IEEE13Node_BusXY.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_EXP_ElemPowers.CSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/IEEELineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/BalancedLoads.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/BusCoords.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/CableData.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/CapControls.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Capacitors.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/EnergyStorage.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Generators.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/LatLongCoords.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/LineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/LineConstantsCode.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/LineGeometry.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesGeometry.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesLineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/LoadXfmrCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Master-bal-initial-config.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Master-unbal-initial-config.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/PV_10pen_DSSPV.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/PV_NN_100_DSSPV.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/README.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Regulators.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Elements.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Test9500new_LineConstants.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Mon_mon1_1.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/Transformers.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/TriplexLineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/TriplexLines.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/UnbalancedLoads.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_dss/WireData.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/BalancedLoads.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/BusCoords.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/CableData.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/CapControls.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Capacitors.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/DSSViewIntercom.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/EnergyStorage.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Generators.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/LatLongCoords.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/LineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/LineConstantsCode.DSS +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/LineGeometry.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesGeometry.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesLineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/LoadXfmrCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Master-bal-initial-config.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Master-unbal-initial-config.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/PV_10pen_DSSPV.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/PV_NN_100_DSSPV.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/README.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Regulators.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Elements.Txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Test9500new_LineConstants.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Mon_mon1_1.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.DSV +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.dbl +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power_elem_kVA.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/Transformers.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/TriplexLineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/TriplexLines.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/UnbalancedLoads.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/ieee9500_wye/WireData.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/minimal_triplex/minimal_triplex.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/rahul123/Line.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/rahul123/Load.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/rahul123/MyLineCodes.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/rahul123/ieee123master_base.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/Buscoords.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/Intermediates.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/LineCodes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/Lines.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/LoadShapes.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/Loads.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/Master.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/PVSystems.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/SMART-DS_version.txt +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/Transformers.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/Summary_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/blown_fuses.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/de-energized_nodes.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_line_overloads.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_over_voltages.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_transformer_overloads.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_under_voltages.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_voltages.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_histogram.png +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_percentiles.png +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_15_180.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_15_225.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_180.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_225.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_90.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_35_135.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_16017_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17146_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17950_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_1835_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19648_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19955_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_20964_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22499_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22635_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_2581_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29069_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29376_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29596_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31655_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31818_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_32244_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33164_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33792_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8445_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8470_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_16017_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17146_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17950_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_1835_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19648_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19955_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_20964_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22499_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22635_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_2581_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29069_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29376_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29596_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31655_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31818_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_32244_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33164_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33792_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8445_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8470_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_10747_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_1077_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_13334_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14588_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14705_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_3216_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_6157_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_7380_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kw_10747_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kw_1077_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kw_13334_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14588_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14705_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kw_3216_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kw_6157_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/profiles/res_kw_7380_pu.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/sensors/reactive_ids.json +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/sensors/real_ids.json +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/smartds_small/sensors/voltage_ids.json +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/test_line/main.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/test_line_unbal_line/main.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/test_line_unbal_load/main.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/test_line_unbal_load_unbal_line/main.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/test_reg/main.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/triplex_3ph/triplex_3ph.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cases/dss/triplex_pv/triplex_pv.dss +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/cim_to_csv_converter.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/processors/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/processors/base_processor.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/processors/bus_processor.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/processors/capacitor_processor.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/processors/generator_processor.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/processors/line_processor.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/processors/regulator_processor.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/processors/switch_processor.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/processors/transformer_processor.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/utils/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/utils/phase_utils.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/validators/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/cim_importer/validators/topology_validator.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/ADMM_MATH_REPORT.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/ENAPP_MATH_REPORT.md +0 -0
- {distopf-1.1.0.dev4/src/distopf/matrix_models/matrix_bess/spatial_decomposition → distopf-1.1.0.dev5/src/distopf/distributed/spatial}/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/admm_agents.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/boundary.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/decompose.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/enapp copy.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/enapp_agents.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/execution.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/messaging.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/penalties.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/spatial/schedule.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/temporal/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/temporal/objectives.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/temporal/tenapp_1o.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/temporal/tenapp_admm.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/temporal/tenapp_aprx.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/distributed/temporal/utils.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/dss_importer/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/dss_importer/dss_to_csv_converter.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/base.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/binary_variable_notes.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/lindist.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/lindist_capacitor_mi.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/lindist_capacitor_regulator_mi.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/lindist_loads.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/lindist_p_gen.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/lindist_q_gen.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/lindist_regulator_mi.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/base_mp.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/lindist_capacitor_mi_mp.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/lindist_loads_mp.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/lindist_mp.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/objectives.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/pyomo_solver.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/readme.md +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/solvers.py +0 -0
- {distopf-1.1.0.dev4/src/distopf/utils → distopf-1.1.0.dev5/src/distopf/matrix_models/matrix_bess/spatial_decomposition}/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/decompose.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/enapp.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/objectives.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/matrix_models/solvers.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/plot.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/constraints.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/factories.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/lindist.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/nl_branchflow.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/nl_branchflow_prebuilt.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/objectives.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/protocol.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/results.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/slack_constraints.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/pyomo_models/solvers.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/utils/call_recorder.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/utils/input_handlers.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/utils/kcl_check.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/utils/ngon.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/utils/query_interface.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/validators.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/wrappers/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/wrappers/base.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/wrappers/matrix_bess_wrapper.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/wrappers/matrix_wrapper.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/src/distopf/wrappers/pyomo_wrapper.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/conftest.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/data/IEEE13.xml +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/data/ieee13/branch_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/data/ieee13/bus_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/data/ieee13/cap_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/data/ieee13/gen_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/data/ieee13/reg_data.csv +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/integration/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/integration/test_full_conversion.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/integration/test_impedance_comparison.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/test_cim_to_csv_helpser.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/test_cim_to_csv_linking.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/test_converter_run.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/test_phase_utils.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/test_processors.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/test_reg_transformer_small.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/test_regulator_impedances.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/test_topology_validator.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/cim_converter/unit/test_transformer_tank_impedances.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/dss_converter/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/dss_converter/integration/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/dss_converter/integration/test_dss_converter_integration.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/dss_converter/integration/test_triplex_lindist.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/dss_converter/unit/__init__.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/dss_converter/unit/test_dss_converter.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/dss_converter/unit/test_transformer.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/dss_converter/unit/test_triplex_converter.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/dss_converter/unit/test_triplex_pv.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/integration_references.json +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/pyomo_models/test_dual_extraction.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/pyomo_models/test_pyomo_lindist.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_admm_agents.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_backends.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_distributed_api.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_enapp_integration.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_exports.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_integration_snapshots.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_matrix_models.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_nlp_backend.py +0 -0
- {distopf-1.1.0.dev4 → distopf-1.1.0.dev5}/tests/test_smoke.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.dev5
|
|
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>
|
|
@@ -16,7 +16,9 @@ Requires-Dist: pandas>=2.3.3
|
|
|
16
16
|
Requires-Dist: plotly>=6.3.0
|
|
17
17
|
Requires-Dist: pyomo>=6.9.4
|
|
18
18
|
Requires-Dist: pyscipopt>=6.0.0
|
|
19
|
+
Requires-Dist: rich-click>=1.9.9
|
|
19
20
|
Requires-Dist: scipy>=1.15.3
|
|
21
|
+
Requires-Dist: tomli>=2.0.1; python_version < '3.11'
|
|
20
22
|
Provides-Extra: cim
|
|
21
23
|
Requires-Dist: cim-graph==0.4.1a2; extra == 'cim'
|
|
22
24
|
Requires-Dist: gridappsd-python==2025.3.2a13; extra == 'cim'
|
|
@@ -100,13 +102,14 @@ result.plot_network().show(renderer="browser")
|
|
|
100
102
|
```python
|
|
101
103
|
import distopf as opf
|
|
102
104
|
case = opf.create_case(opf.CASES_DIR / "csv" / "ieee123_30der")
|
|
103
|
-
|
|
105
|
+
case.modify(v_max=1.05, v_min=0.95, gen_mult=10)
|
|
106
|
+
result = case.run_opf(objective="curtail_min", control_variable="P")
|
|
104
107
|
result.plot_network().show(renderer="browser")
|
|
105
108
|
```
|
|
106
109
|
|
|
107
110
|
## Spatial ENAPP and ADMM solvers
|
|
108
111
|
|
|
109
|
-
The spatial solvers are available through the public [`Case.run_enapp()`](src/distopf/api.py:
|
|
112
|
+
The spatial solvers are available through the public [`Case.run_enapp()`](src/distopf/api.py:590) and [`Case.run_admm()`](src/distopf/api.py:630) 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
113
|
|
|
111
114
|
```python
|
|
112
115
|
area_info = {
|
|
@@ -134,7 +137,7 @@ result = case.run_enapp(
|
|
|
134
137
|
|
|
135
138
|
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
139
|
|
|
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:
|
|
140
|
+
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:1165):
|
|
138
141
|
|
|
139
142
|
```python
|
|
140
143
|
result.save("results/ieee13-enapp")
|
|
@@ -143,6 +146,42 @@ replayed = opf.replay("results/ieee13-enapp/run_config.json")
|
|
|
143
146
|
|
|
144
147
|
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
148
|
|
|
149
|
+
### Command-line interface
|
|
150
|
+
|
|
151
|
+
The installed `distopf` command provides human-readable and JSON output for saved runs, user-authored TOML scenarios, and result comparisons. Run `distopf --help` or any subcommand with `--help` for the complete option list.
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
distopf inspect results/ieee13-enapp/run_config.json
|
|
155
|
+
distopf validate results/ieee13-enapp/run_config.json
|
|
156
|
+
distopf run results/ieee13-enapp/run_config.json --output-dir results/replayed
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Public commands are:
|
|
160
|
+
|
|
161
|
+
- `run CONFIG [--output-dir DIR] [--verbose] [--json]` runs a JSON `run_config.json` replay artifact or a TOML scenario. Scenario analysis types are `pf`/`power_flow`, `fbs`, `opf`, `enapp`, and `admm`.
|
|
162
|
+
- `inspect CONFIG [--json]` displays scenario or replay metadata without solving.
|
|
163
|
+
- `validate CONFIG [--json]` checks configuration structure, referenced paths, replayability, and case data.
|
|
164
|
+
- `replay-exact-power-flow INPUT_PATH [OUTPUT_PATH] [--overwrite] [--json]` replays saved OPF setpoints through the exact FBS power flow. The output defaults to `INPUT_PATH/exact`; existing output is preserved unless `--overwrite` is supplied.
|
|
165
|
+
- `compare LEFT_FOLDER RIGHT_FOLDER [--output-dir DIR] [--nominal-voltage VALUE] [--json]` compares common result CSV tables and writes `comparison.json` plus difference CSVs. `--nominal-voltage` defaults to `1.0` and is used for voltage metrics.
|
|
166
|
+
- `compare-exact FOLDER [RIGHT_FOLDER] [--batch] [--depth N] [--workers N] [--output-dir DIR] [--nominal-voltage VALUE] [--json]` compares a result folder with its `exact` FBS replay, creating that replay when needed. With `--batch`, it processes directories exactly `--depth` levels below `FOLDER`; `RIGHT_FOLDER` cannot be combined with `--batch`.
|
|
167
|
+
|
|
168
|
+
Add `--json` to any command for machine-readable output. Successful commands return `0`; validation failures return `1`; run and comparison runtime failures return `2`.
|
|
169
|
+
|
|
170
|
+
Use `distopf run --help` for the full scenario format. A minimal `scenario.toml` is:
|
|
171
|
+
|
|
172
|
+
```toml
|
|
173
|
+
[case]
|
|
174
|
+
path = "../cases/csv/ieee13"
|
|
175
|
+
|
|
176
|
+
[analysis]
|
|
177
|
+
type = "opf"
|
|
178
|
+
objective = "loss"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
TOML scenarios require only `case.path` and `analysis.type`; `pf`/`power_flow`, `fbs`, `opf`, `enapp`, and `admm` are supported. Case options go directly under `[case]`, modifications under `[case.modifications]`, and ENAPP/ADMM topology under `[analysis.area_info.<area>]`. The `version` field is optional and defaults to `1`.
|
|
182
|
+
|
|
183
|
+
JSON `run_config.json` files generated by `PowerFlowResult.save()` remain supported as exact replay artifacts. Use `--json` on any subcommand for automation. `inspect` reads metadata without solving. `validate` checks the schema, referenced case directory, replayability, and case data. `run` executes either format and can persist result CSV files and metadata with `--output-dir`. Successful commands return exit code `0`; validation failures return `1`; run/runtime failures return `2`.
|
|
184
|
+
|
|
146
185
|
|
|
147
186
|
|
|
148
187
|
## Optimization Wrappers
|
|
@@ -231,12 +270,14 @@ result = case.run_opf(wrapper="matrix_bess", objective="loss")
|
|
|
231
270
|
```
|
|
232
271
|
|
|
233
272
|
#### Wrapper Comparison
|
|
234
|
-
| Feature | Matrix
|
|
235
|
-
|
|
236
|
-
|
|
|
237
|
-
|
|
|
238
|
-
|
|
|
239
|
-
|
|
|
273
|
+
| Feature | Matrix | Matrix BESS | Pyomo |
|
|
274
|
+
|---------|---|---|---|
|
|
275
|
+
| Primary role | Single-period convex LinDistFlow OPF | Multi-period LinDistFlow OPF with batteries and schedules | LinDistFlow, BranchFlow, or SOCP-relaxed BranchFlow |
|
|
276
|
+
| Solver API | SciPy or CVXPY | CVXPY | Pyomo |
|
|
277
|
+
| Default solver path | CVXPY with CLARABEL | CVXPY with CLARABEL | IPOPT |
|
|
278
|
+
| Other supported solver choices | Depends on installed CVXPY/SciPy backends | Depends on installed CVXPY backend | MINLP solvers such as Bonmin/Couenne for supported discrete models |
|
|
279
|
+
|
|
280
|
+
The default `Case.run_opf()` wrapper is Pyomo unless a `formulation` selects another wrapper. Matrix is intended for fast single-period convex models; Matrix BESS is the time-series/battery backend. Pyomo is the backend for nonlinear BranchFlow, SOCP, Pyomo dual extraction, and its supported discrete formulations. Solver availability depends on the installed backend and model.
|
|
240
281
|
|
|
241
282
|
#### Solver Requirements
|
|
242
283
|
- **IPOPT**: Install via `conda install -c conda-forge ipopt`. On Ubuntu, `apt-get install coinor-libipopt-dev` only installs headers and shared libraries; it does not provide the `ipopt` executable that Pyomo's `SolverFactory("ipopt")` expects.
|
|
@@ -247,11 +288,11 @@ DistOPF supports multiple optimization objectives for distribution system OPF:
|
|
|
247
288
|
|
|
248
289
|
| Objective | String | Supported Wrappers | Description |
|
|
249
290
|
|-----------|--------|-------------------|-------------|
|
|
250
|
-
| **Loss Minimization** | `"loss"`, `"loss_min"` |
|
|
251
|
-
| **Substation Power** | `"substation"`, `"substation_power"` | Pyomo
|
|
291
|
+
| **Loss Minimization** | `"loss"`, `"loss_min"` | Matrix, Matrix BESS, Pyomo | Minimize distribution losses (most common) |
|
|
292
|
+
| **Substation Power** | `"substation"`, `"substation_power"` | Pyomo | Minimize power imported from substation |
|
|
252
293
|
| **Voltage Deviation** | `"voltage_deviation"` | Pyomo | Minimize deviations from nominal voltage (1.0 p.u.) |
|
|
253
|
-
| **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Pyomo | Minimize DER curtailment |
|
|
254
|
-
| **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo
|
|
294
|
+
| **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Matrix, Matrix BESS, Pyomo | Minimize DER curtailment |
|
|
295
|
+
| **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo | Minimize energy procurement cost from the swing bus; requires price data and a time horizon |
|
|
255
296
|
|
|
256
297
|
#### Cost Minimization with Price Data
|
|
257
298
|
|
|
@@ -261,10 +302,10 @@ To use cost minimization, add an hourly `price` column to the case schedules (in
|
|
|
261
302
|
import pandas as pd
|
|
262
303
|
import distopf as opf
|
|
263
304
|
|
|
264
|
-
case = opf.create_case(opf.CASES_DIR / "csv" / "ieee123_30der")
|
|
305
|
+
case = opf.create_case(opf.CASES_DIR / "csv" / "ieee123_30der", n_steps=24)
|
|
265
306
|
|
|
266
307
|
# Add hourly electricity prices
|
|
267
|
-
case.schedules['price'] = [38, 35, 34, 32, 30, 32, 38, 45, 52, 58, 62, 65,
|
|
308
|
+
case.schedules['price'] = [38, 35, 34, 32, 30, 32, 38, 45, 52, 58, 62, 65,
|
|
268
309
|
68, 65, 62, 58, 55, 60, 75, 82, 78, 65, 50, 42]
|
|
269
310
|
|
|
270
311
|
# Run OPF minimizing energy cost
|
|
@@ -274,10 +315,15 @@ print(f"Total energy cost: ${result.objective_value:.2f}")
|
|
|
274
315
|
|
|
275
316
|
### Result Fields
|
|
276
317
|
|
|
277
|
-
`PowerFlowResult` uses descriptive field names. Short aliases are also accepted for backward compatibility.
|
|
318
|
+
`PowerFlowResult` uses descriptive field names. Short aliases are also accepted for backward compatibility. Fields are optional: availability depends on the analysis, backend, case devices, and requested options.
|
|
319
|
+
|
|
320
|
+
Core fields include `voltages`/`voltage_magnitudes`, `voltage_angles`, active and reactive power flows, active and reactive generation, and active and reactive loads. FBS results provide `voltage_angles`, `currents`, and `current_angles` (angles are in degrees); these fields can also be present when another backend has computed them.
|
|
321
|
+
|
|
322
|
+
Battery and device fields include `battery_active_power`, `battery_reactive_power`, `p_charge`, `p_discharge`, and `soc`; regulator/capacitor-related fields include `tap_ratios`, `reg_taps`, `z_caps`, and `u_caps`, where supported by the selected model. `capacitor_reactive_power` is also available for capacitor outputs. Mixed-integer binary details may remain available through `raw_result` rather than the unified result fields.
|
|
278
323
|
|
|
279
324
|
| Field Name | Alias |
|
|
280
325
|
|---|---|
|
|
326
|
+
| `voltages` | — |
|
|
281
327
|
| `active_power_flows` | `p_flows` |
|
|
282
328
|
| `reactive_power_flows` | `q_flows` |
|
|
283
329
|
| `active_power_generation` | `p_gens` |
|
|
@@ -286,19 +332,25 @@ print(f"Total energy cost: ${result.objective_value:.2f}")
|
|
|
286
332
|
| `reactive_power_loads` | `q_loads` |
|
|
287
333
|
| `capacitor_reactive_power` | `q_caps` |
|
|
288
334
|
| `battery_active_power` | `p_bats` |
|
|
289
|
-
| `
|
|
335
|
+
| `battery_reactive_power` | `q_bats` |
|
|
336
|
+
|
|
337
|
+
#### Plotting and Dual Variables
|
|
290
338
|
|
|
291
|
-
|
|
292
|
-
|
|
339
|
+
The public plotting methods return Plotly figures: `plot_voltages(t=None)`, `plot_power_flows(t=None)`, `plot_gens(t=None)`, `plot_batteries()`, `plot_schedules()`, `plot_network(v_min=0.95, v_max=1.05, show_phases="abc", show_reactive_power=False, t=None)`, `plot_voltage_vs_distance(title=..., color_by="algorithm", include_secondary_phases=False)`, and `plot_line_flow_vs_distance(power_type="active", title=..., color_by="algorithm", include_secondary_phases=False)`. Methods that require unavailable result data or a case reference raise `RuntimeError`.
|
|
340
|
+
|
|
341
|
+
When running with `duals=True` using the Pyomo wrapper, dual variables are accessible on the result object. The unified names are:
|
|
293
342
|
|
|
294
343
|
```python
|
|
295
344
|
result = case.run_opf(wrapper="pyomo", objective="loss", duals=True)
|
|
296
345
|
result.dual_power_balance_p
|
|
297
346
|
result.dual_power_balance_q
|
|
298
347
|
result.dual_voltage_drop
|
|
299
|
-
result.
|
|
348
|
+
result.dual_voltage_limits_lower
|
|
349
|
+
result.dual_voltage_limits_upper
|
|
300
350
|
```
|
|
301
351
|
|
|
352
|
+
Dual extraction is Pyomo-only; matrix and FBS results do not populate these fields.
|
|
353
|
+
|
|
302
354
|
## Using a custom model.
|
|
303
355
|
Create CSVs formatted as shown below and store them in a single folder. The csv names must match exactly as shown.
|
|
304
356
|
Column order is not important.
|
|
@@ -76,13 +76,14 @@ result.plot_network().show(renderer="browser")
|
|
|
76
76
|
```python
|
|
77
77
|
import distopf as opf
|
|
78
78
|
case = opf.create_case(opf.CASES_DIR / "csv" / "ieee123_30der")
|
|
79
|
-
|
|
79
|
+
case.modify(v_max=1.05, v_min=0.95, gen_mult=10)
|
|
80
|
+
result = case.run_opf(objective="curtail_min", control_variable="P")
|
|
80
81
|
result.plot_network().show(renderer="browser")
|
|
81
82
|
```
|
|
82
83
|
|
|
83
84
|
## Spatial ENAPP and ADMM solvers
|
|
84
85
|
|
|
85
|
-
The spatial solvers are available through the public [`Case.run_enapp()`](src/distopf/api.py:
|
|
86
|
+
The spatial solvers are available through the public [`Case.run_enapp()`](src/distopf/api.py:590) and [`Case.run_admm()`](src/distopf/api.py:630) 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
|
|
|
87
88
|
```python
|
|
88
89
|
area_info = {
|
|
@@ -110,7 +111,7 @@ result = case.run_enapp(
|
|
|
110
111
|
|
|
111
112
|
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
|
|
|
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:
|
|
114
|
+
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:1165):
|
|
114
115
|
|
|
115
116
|
```python
|
|
116
117
|
result.save("results/ieee13-enapp")
|
|
@@ -119,6 +120,42 @@ replayed = opf.replay("results/ieee13-enapp/run_config.json")
|
|
|
119
120
|
|
|
120
121
|
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
|
+
### Command-line interface
|
|
124
|
+
|
|
125
|
+
The installed `distopf` command provides human-readable and JSON output for saved runs, user-authored TOML scenarios, and result comparisons. Run `distopf --help` or any subcommand with `--help` for the complete option list.
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
distopf inspect results/ieee13-enapp/run_config.json
|
|
129
|
+
distopf validate results/ieee13-enapp/run_config.json
|
|
130
|
+
distopf run results/ieee13-enapp/run_config.json --output-dir results/replayed
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Public commands are:
|
|
134
|
+
|
|
135
|
+
- `run CONFIG [--output-dir DIR] [--verbose] [--json]` runs a JSON `run_config.json` replay artifact or a TOML scenario. Scenario analysis types are `pf`/`power_flow`, `fbs`, `opf`, `enapp`, and `admm`.
|
|
136
|
+
- `inspect CONFIG [--json]` displays scenario or replay metadata without solving.
|
|
137
|
+
- `validate CONFIG [--json]` checks configuration structure, referenced paths, replayability, and case data.
|
|
138
|
+
- `replay-exact-power-flow INPUT_PATH [OUTPUT_PATH] [--overwrite] [--json]` replays saved OPF setpoints through the exact FBS power flow. The output defaults to `INPUT_PATH/exact`; existing output is preserved unless `--overwrite` is supplied.
|
|
139
|
+
- `compare LEFT_FOLDER RIGHT_FOLDER [--output-dir DIR] [--nominal-voltage VALUE] [--json]` compares common result CSV tables and writes `comparison.json` plus difference CSVs. `--nominal-voltage` defaults to `1.0` and is used for voltage metrics.
|
|
140
|
+
- `compare-exact FOLDER [RIGHT_FOLDER] [--batch] [--depth N] [--workers N] [--output-dir DIR] [--nominal-voltage VALUE] [--json]` compares a result folder with its `exact` FBS replay, creating that replay when needed. With `--batch`, it processes directories exactly `--depth` levels below `FOLDER`; `RIGHT_FOLDER` cannot be combined with `--batch`.
|
|
141
|
+
|
|
142
|
+
Add `--json` to any command for machine-readable output. Successful commands return `0`; validation failures return `1`; run and comparison runtime failures return `2`.
|
|
143
|
+
|
|
144
|
+
Use `distopf run --help` for the full scenario format. A minimal `scenario.toml` is:
|
|
145
|
+
|
|
146
|
+
```toml
|
|
147
|
+
[case]
|
|
148
|
+
path = "../cases/csv/ieee13"
|
|
149
|
+
|
|
150
|
+
[analysis]
|
|
151
|
+
type = "opf"
|
|
152
|
+
objective = "loss"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
TOML scenarios require only `case.path` and `analysis.type`; `pf`/`power_flow`, `fbs`, `opf`, `enapp`, and `admm` are supported. Case options go directly under `[case]`, modifications under `[case.modifications]`, and ENAPP/ADMM topology under `[analysis.area_info.<area>]`. The `version` field is optional and defaults to `1`.
|
|
156
|
+
|
|
157
|
+
JSON `run_config.json` files generated by `PowerFlowResult.save()` remain supported as exact replay artifacts. Use `--json` on any subcommand for automation. `inspect` reads metadata without solving. `validate` checks the schema, referenced case directory, replayability, and case data. `run` executes either format and can persist result CSV files and metadata with `--output-dir`. Successful commands return exit code `0`; validation failures return `1`; run/runtime failures return `2`.
|
|
158
|
+
|
|
122
159
|
|
|
123
160
|
|
|
124
161
|
## Optimization Wrappers
|
|
@@ -207,12 +244,14 @@ result = case.run_opf(wrapper="matrix_bess", objective="loss")
|
|
|
207
244
|
```
|
|
208
245
|
|
|
209
246
|
#### Wrapper Comparison
|
|
210
|
-
| Feature | Matrix
|
|
211
|
-
|
|
212
|
-
|
|
|
213
|
-
|
|
|
214
|
-
|
|
|
215
|
-
|
|
|
247
|
+
| Feature | Matrix | Matrix BESS | Pyomo |
|
|
248
|
+
|---------|---|---|---|
|
|
249
|
+
| Primary role | Single-period convex LinDistFlow OPF | Multi-period LinDistFlow OPF with batteries and schedules | LinDistFlow, BranchFlow, or SOCP-relaxed BranchFlow |
|
|
250
|
+
| Solver API | SciPy or CVXPY | CVXPY | Pyomo |
|
|
251
|
+
| Default solver path | CVXPY with CLARABEL | CVXPY with CLARABEL | IPOPT |
|
|
252
|
+
| Other supported solver choices | Depends on installed CVXPY/SciPy backends | Depends on installed CVXPY backend | MINLP solvers such as Bonmin/Couenne for supported discrete models |
|
|
253
|
+
|
|
254
|
+
The default `Case.run_opf()` wrapper is Pyomo unless a `formulation` selects another wrapper. Matrix is intended for fast single-period convex models; Matrix BESS is the time-series/battery backend. Pyomo is the backend for nonlinear BranchFlow, SOCP, Pyomo dual extraction, and its supported discrete formulations. Solver availability depends on the installed backend and model.
|
|
216
255
|
|
|
217
256
|
#### Solver Requirements
|
|
218
257
|
- **IPOPT**: Install via `conda install -c conda-forge ipopt`. On Ubuntu, `apt-get install coinor-libipopt-dev` only installs headers and shared libraries; it does not provide the `ipopt` executable that Pyomo's `SolverFactory("ipopt")` expects.
|
|
@@ -223,11 +262,11 @@ DistOPF supports multiple optimization objectives for distribution system OPF:
|
|
|
223
262
|
|
|
224
263
|
| Objective | String | Supported Wrappers | Description |
|
|
225
264
|
|-----------|--------|-------------------|-------------|
|
|
226
|
-
| **Loss Minimization** | `"loss"`, `"loss_min"` |
|
|
227
|
-
| **Substation Power** | `"substation"`, `"substation_power"` | Pyomo
|
|
265
|
+
| **Loss Minimization** | `"loss"`, `"loss_min"` | Matrix, Matrix BESS, Pyomo | Minimize distribution losses (most common) |
|
|
266
|
+
| **Substation Power** | `"substation"`, `"substation_power"` | Pyomo | Minimize power imported from substation |
|
|
228
267
|
| **Voltage Deviation** | `"voltage_deviation"` | Pyomo | Minimize deviations from nominal voltage (1.0 p.u.) |
|
|
229
|
-
| **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Pyomo | Minimize DER curtailment |
|
|
230
|
-
| **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo
|
|
268
|
+
| **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Matrix, Matrix BESS, Pyomo | Minimize DER curtailment |
|
|
269
|
+
| **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo | Minimize energy procurement cost from the swing bus; requires price data and a time horizon |
|
|
231
270
|
|
|
232
271
|
#### Cost Minimization with Price Data
|
|
233
272
|
|
|
@@ -237,10 +276,10 @@ To use cost minimization, add an hourly `price` column to the case schedules (in
|
|
|
237
276
|
import pandas as pd
|
|
238
277
|
import distopf as opf
|
|
239
278
|
|
|
240
|
-
case = opf.create_case(opf.CASES_DIR / "csv" / "ieee123_30der")
|
|
279
|
+
case = opf.create_case(opf.CASES_DIR / "csv" / "ieee123_30der", n_steps=24)
|
|
241
280
|
|
|
242
281
|
# Add hourly electricity prices
|
|
243
|
-
case.schedules['price'] = [38, 35, 34, 32, 30, 32, 38, 45, 52, 58, 62, 65,
|
|
282
|
+
case.schedules['price'] = [38, 35, 34, 32, 30, 32, 38, 45, 52, 58, 62, 65,
|
|
244
283
|
68, 65, 62, 58, 55, 60, 75, 82, 78, 65, 50, 42]
|
|
245
284
|
|
|
246
285
|
# Run OPF minimizing energy cost
|
|
@@ -250,10 +289,15 @@ print(f"Total energy cost: ${result.objective_value:.2f}")
|
|
|
250
289
|
|
|
251
290
|
### Result Fields
|
|
252
291
|
|
|
253
|
-
`PowerFlowResult` uses descriptive field names. Short aliases are also accepted for backward compatibility.
|
|
292
|
+
`PowerFlowResult` uses descriptive field names. Short aliases are also accepted for backward compatibility. Fields are optional: availability depends on the analysis, backend, case devices, and requested options.
|
|
293
|
+
|
|
294
|
+
Core fields include `voltages`/`voltage_magnitudes`, `voltage_angles`, active and reactive power flows, active and reactive generation, and active and reactive loads. FBS results provide `voltage_angles`, `currents`, and `current_angles` (angles are in degrees); these fields can also be present when another backend has computed them.
|
|
295
|
+
|
|
296
|
+
Battery and device fields include `battery_active_power`, `battery_reactive_power`, `p_charge`, `p_discharge`, and `soc`; regulator/capacitor-related fields include `tap_ratios`, `reg_taps`, `z_caps`, and `u_caps`, where supported by the selected model. `capacitor_reactive_power` is also available for capacitor outputs. Mixed-integer binary details may remain available through `raw_result` rather than the unified result fields.
|
|
254
297
|
|
|
255
298
|
| Field Name | Alias |
|
|
256
299
|
|---|---|
|
|
300
|
+
| `voltages` | — |
|
|
257
301
|
| `active_power_flows` | `p_flows` |
|
|
258
302
|
| `reactive_power_flows` | `q_flows` |
|
|
259
303
|
| `active_power_generation` | `p_gens` |
|
|
@@ -262,19 +306,25 @@ print(f"Total energy cost: ${result.objective_value:.2f}")
|
|
|
262
306
|
| `reactive_power_loads` | `q_loads` |
|
|
263
307
|
| `capacitor_reactive_power` | `q_caps` |
|
|
264
308
|
| `battery_active_power` | `p_bats` |
|
|
265
|
-
| `
|
|
309
|
+
| `battery_reactive_power` | `q_bats` |
|
|
310
|
+
|
|
311
|
+
#### Plotting and Dual Variables
|
|
266
312
|
|
|
267
|
-
|
|
268
|
-
|
|
313
|
+
The public plotting methods return Plotly figures: `plot_voltages(t=None)`, `plot_power_flows(t=None)`, `plot_gens(t=None)`, `plot_batteries()`, `plot_schedules()`, `plot_network(v_min=0.95, v_max=1.05, show_phases="abc", show_reactive_power=False, t=None)`, `plot_voltage_vs_distance(title=..., color_by="algorithm", include_secondary_phases=False)`, and `plot_line_flow_vs_distance(power_type="active", title=..., color_by="algorithm", include_secondary_phases=False)`. Methods that require unavailable result data or a case reference raise `RuntimeError`.
|
|
314
|
+
|
|
315
|
+
When running with `duals=True` using the Pyomo wrapper, dual variables are accessible on the result object. The unified names are:
|
|
269
316
|
|
|
270
317
|
```python
|
|
271
318
|
result = case.run_opf(wrapper="pyomo", objective="loss", duals=True)
|
|
272
319
|
result.dual_power_balance_p
|
|
273
320
|
result.dual_power_balance_q
|
|
274
321
|
result.dual_voltage_drop
|
|
275
|
-
result.
|
|
322
|
+
result.dual_voltage_limits_lower
|
|
323
|
+
result.dual_voltage_limits_upper
|
|
276
324
|
```
|
|
277
325
|
|
|
326
|
+
Dual extraction is Pyomo-only; matrix and FBS results do not populate these fields.
|
|
327
|
+
|
|
278
328
|
## Using a custom model.
|
|
279
329
|
Create CSVs formatted as shown below and store them in a single folder. The csv names must match exactly as shown.
|
|
280
330
|
Column order is not important.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Common Solver Failure Causes
|
|
2
|
+
|
|
3
|
+
This guide covers data and model-configuration conditions that can produce
|
|
4
|
+
infeasible, unconstrained, or otherwise misleading solves. It is diagnostic
|
|
5
|
+
guidance, not a complete solver manual: the exact symptoms and available
|
|
6
|
+
options depend on the selected `Case` analysis, wrapper, formulation, and
|
|
7
|
+
installed solver. Check the returned result status and error message before
|
|
8
|
+
assuming that a numerical solver failure is the root cause.
|
|
9
|
+
|
|
10
|
+
The examples below use the public case data tables and validation helpers. They
|
|
11
|
+
do not change solver behavior or repair input data automatically.
|
|
12
|
+
|
|
13
|
+
## Bus Has Phases Missing From Its Incoming Branch
|
|
14
|
+
|
|
15
|
+
The model creates voltage variables from `bus_data`, but voltage-drop equations
|
|
16
|
+
only connect phases present on the incoming `branch_data` row. A declared phase
|
|
17
|
+
with no incoming branch phase is therefore bounded but unconstrained.
|
|
18
|
+
|
|
19
|
+
Observed in the converted ieee9500_wye case:
|
|
20
|
+
|
|
21
|
+
- Bus `2827`: declared `ac`, incoming `a`, unconstrained `v[2827, c]`.
|
|
22
|
+
- Bus `4440`: declared `ab`, incoming `a`, unconstrained `v[4440, b]`.
|
|
23
|
+
|
|
24
|
+
With a constant objective, these variables can take their lower voltage bound.
|
|
25
|
+
|
|
26
|
+
Check for this condition before solving:
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
from distopf.utils import find_unconstrained_bus_phases
|
|
30
|
+
|
|
31
|
+
bad_phases = find_unconstrained_bus_phases(case.bus_data, case.branch_data)
|
|
32
|
+
print(bad_phases)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Remove invalid bus phases or add the corresponding incoming branch phases
|
|
36
|
+
before building the voltage equations. This condition is especially important
|
|
37
|
+
for radial multi-phase models; a successful solver return does not by itself
|
|
38
|
+
prove that every declared phase was connected by a voltage-drop equation.
|
|
39
|
+
|
|
40
|
+
## Interpreting solver failures
|
|
41
|
+
|
|
42
|
+
- Distinguish input validation errors, infeasibility, unbounded objectives, and
|
|
43
|
+
backend/executable availability errors; they require different fixes.
|
|
44
|
+
- Confirm that the requested wrapper and formulation support the requested
|
|
45
|
+
objective and controls. Matrix, Matrix BESS, Pyomo, and FBS expose different
|
|
46
|
+
capabilities and result fields.
|
|
47
|
+
- For Pyomo nonlinear or discrete formulations, check the selected solver and
|
|
48
|
+
initialization options separately from the network data. For multi-period
|
|
49
|
+
cases, also check schedules, time-step bounds, and battery limits.
|
|
50
|
+
- Preserve the original case and solver logs when reporting a failure. A
|
|
51
|
+
minimal reproduction with the case path, wrapper/formulation, objective,
|
|
52
|
+
control flags, and relevant options is more useful than a traceback alone.
|
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
This directory contains a comprehensive set of examples showing how to use DistOPF
|
|
4
4
|
for various optimal power flow (OPF) problems, organized by topic.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
Most `.py` files in this directory are ordinary Python scripts. Run them from the
|
|
7
|
+
repository root with, for example, `uv run examples/tutorials/01_simple_power_flow.py`.
|
|
8
|
+
Some files are Marimo apps (marked `Marimo` in the tables below); open one with
|
|
9
|
+
`uv run marimo edit examples/basics/basic_power_flow_examples.py` or start Marimo
|
|
10
|
+
and select the file in its browser UI. A Marimo app is edited/run through Marimo,
|
|
11
|
+
not executed as a plain script when interactive cells are required.
|
|
8
12
|
|
|
9
13
|
## Directory Structure
|
|
10
14
|
|
|
@@ -21,12 +25,16 @@ examples/
|
|
|
21
25
|
|
|
22
26
|
## How to Run Examples
|
|
23
27
|
|
|
24
|
-
Each
|
|
28
|
+
Each ordinary script is standalone and can be run independently:
|
|
25
29
|
|
|
26
30
|
uv run examples/tutorials/01_simple_power_flow.py
|
|
27
|
-
uv run examples/pyomo/
|
|
31
|
+
uv run examples/pyomo/pyomo_multiperiod.py
|
|
28
32
|
uv run examples/data_import/cim_example.py
|
|
29
33
|
|
|
34
|
+
For a Marimo app, use Marimo's editor instead:
|
|
35
|
+
|
|
36
|
+
uv run marimo edit examples/basics/basic_power_flow_examples.py
|
|
37
|
+
|
|
30
38
|
---
|
|
31
39
|
|
|
32
40
|
## `tutorials/` — Start Here
|
|
@@ -129,8 +137,8 @@ Performance benchmarking, distributed algorithms, and experimental scripts.
|
|
|
129
137
|
|
|
130
138
|
**Objective**
|
|
131
139
|
The goal of optimization:
|
|
132
|
-
- `"loss_min"
|
|
133
|
-
- `"
|
|
140
|
+
- `"loss_min"` (or `"loss"`): Minimize real power losses
|
|
141
|
+
- `"voltage_deviation"`: Minimize voltage deviations (Pyomo)
|
|
134
142
|
|
|
135
143
|
**Control Variable**
|
|
136
144
|
What DERs (generators, batteries, inverters) are allowed to control:
|
|
@@ -141,9 +149,14 @@ Performance benchmarking, distributed algorithms, and experimental scripts.
|
|
|
141
149
|
|
|
142
150
|
**Wrapper / Formulation**
|
|
143
151
|
Which optimization engine to use:
|
|
144
|
-
- `"matrix"`:
|
|
145
|
-
- `"pyomo"`: Pyomo
|
|
146
|
-
- `"matrix_bess"`: Multi-period with batteries
|
|
152
|
+
- `"matrix"`: Single-period matrix LinDistFlow models using CVXPY/SciPy backends
|
|
153
|
+
- `"pyomo"`: Pyomo models using `formulation="lindist"`, `"branchflow"`, or `"socp"`
|
|
154
|
+
- `"matrix_bess"`: Multi-period matrix models with batteries and schedules
|
|
155
|
+
|
|
156
|
+
`model_type` is an internal wrapper/model-selection term; public users should
|
|
157
|
+
prefer `Case.run_opf(formulation=...)` and the public `Case` APIs rather than
|
|
158
|
+
constructing wrapper classes directly. `formulation="branchflow"` selects the
|
|
159
|
+
nonlinear Pyomo model; it is not an argument named `model_type` on `run_opf()`.
|
|
147
160
|
|
|
148
161
|
**Results**
|
|
149
162
|
After solving, you get:
|
|
@@ -175,5 +188,5 @@ Performance benchmarking, distributed algorithms, and experimental scripts.
|
|
|
175
188
|
## Resources
|
|
176
189
|
|
|
177
190
|
- [Project README](../README.md): Project overview
|
|
178
|
-
- `src/distopf/wrappers/base.py
|
|
191
|
+
- [`src/distopf/wrappers/base.py`](../src/distopf/wrappers/base.py): Internal/advanced wrapper base reference; ordinary users should start with the public `Case` APIs in [`src/distopf/api.py`](../src/distopf/api.py)
|
|
179
192
|
- `tests/`: Unit tests with more detailed usage patterns
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Minimal user-authored DistOPF scenario.
|
|
2
|
+
# Paths are resolved relative to this file.
|
|
3
|
+
|
|
4
|
+
[case]
|
|
5
|
+
path = "../../src/distopf/cases/csv/ieee123_30der"
|
|
6
|
+
|
|
7
|
+
[analysis]
|
|
8
|
+
type = "opf"
|
|
9
|
+
objective = "loss"
|
|
10
|
+
|
|
11
|
+
# Optional: save results and the generated run_config.json here.
|
|
12
|
+
[output]
|
|
13
|
+
directory = "../../scratch/example_results_ieee123_30der"
|
|
14
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Minimal user-authored DistOPF scenario.
|
|
2
|
+
# Paths are resolved relative to this file.
|
|
3
|
+
|
|
4
|
+
[case]
|
|
5
|
+
path = "../../src/distopf/cases/csv/ieee123_bat"
|
|
6
|
+
n_steps = 24
|
|
7
|
+
start_step = 0
|
|
8
|
+
|
|
9
|
+
[analysis]
|
|
10
|
+
type = "opf"
|
|
11
|
+
objective = "loss"
|
|
12
|
+
|
|
13
|
+
# Optional: save results and the generated run_config.json here.
|
|
14
|
+
[output]
|
|
15
|
+
directory = "../../scratch/example_results_ieee123_bat"
|
|
16
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Minimal user-authored DistOPF scenario.
|
|
2
|
+
# Paths are resolved relative to this file.
|
|
3
|
+
|
|
4
|
+
[case]
|
|
5
|
+
path = "../../src/distopf/cases/csv/ieee13"
|
|
6
|
+
|
|
7
|
+
[analysis]
|
|
8
|
+
type = "opf"
|
|
9
|
+
objective = "loss"
|
|
10
|
+
|
|
11
|
+
# Optional: save results and the generated run_config.json here.
|
|
12
|
+
[output]
|
|
13
|
+
directory = "../../scratch/example_results"
|
|
14
|
+
|
|
15
|
+
# For ENAPP or ADMM, use this form instead:
|
|
16
|
+
# [analysis]
|
|
17
|
+
# type = "enapp"
|
|
18
|
+
# objective = "loss"
|
|
19
|
+
# parallel = false
|
|
20
|
+
|
|
21
|
+
# [analysis.area_info.area1]
|
|
22
|
+
# up_areas = []
|
|
23
|
+
# down_areas = ["area2"]
|
|
24
|
+
# up_buses = ["sourcebus"]
|
|
25
|
+
# down_buses = ["632"]
|
|
26
|
+
|
|
27
|
+
# [analysis.area_info.area2]
|
|
28
|
+
# up_areas = ["area1"]
|
|
29
|
+
# down_areas = []
|
|
30
|
+
# up_buses = ["632"]
|
|
31
|
+
# down_buses = []
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Minimal user-authored DistOPF scenario.
|
|
2
|
+
# Paths are resolved relative to this file.
|
|
3
|
+
|
|
4
|
+
[case]
|
|
5
|
+
path = "../../src/distopf/cases/csv/ieee13"
|
|
6
|
+
|
|
7
|
+
[analysis]
|
|
8
|
+
type = "opf"
|
|
9
|
+
objective = "loss"
|
|
10
|
+
|
|
11
|
+
# Optional: save results and the generated run_config.json here.
|
|
12
|
+
[output]
|
|
13
|
+
directory = "../../scratch/example_results"
|
|
14
|
+
|
|
15
|
+
# For ENAPP or ADMM, use this form instead:
|
|
16
|
+
# [analysis]
|
|
17
|
+
# type = "enapp"
|
|
18
|
+
# objective = "loss"
|
|
19
|
+
# parallel = false
|
|
20
|
+
|
|
21
|
+
# [analysis.area_info.area1]
|
|
22
|
+
# up_areas = []
|
|
23
|
+
# down_areas = ["area2"]
|
|
24
|
+
# up_buses = ["sourcebus"]
|
|
25
|
+
# down_buses = ["632"]
|
|
26
|
+
|
|
27
|
+
# [analysis.area_info.area2]
|
|
28
|
+
# up_areas = ["area1"]
|
|
29
|
+
# down_areas = []
|
|
30
|
+
# up_buses = ["632"]
|
|
31
|
+
# down_buses = []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "distopf"
|
|
3
|
-
version = "1.1.0.
|
|
3
|
+
version = "1.1.0.dev5"
|
|
4
4
|
description = "A package for solving unbalanced three-phase distribution system optimal power flow problems."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -21,6 +21,8 @@ dependencies = [
|
|
|
21
21
|
"altdss[all]>=0.2.4",
|
|
22
22
|
"pyscipopt>=6.0.0",
|
|
23
23
|
"highspy>=1.13.0",
|
|
24
|
+
"rich-click>=1.9.9",
|
|
25
|
+
"tomli>=2.0.1; python_version < '3.11'",
|
|
24
26
|
]
|
|
25
27
|
|
|
26
28
|
[project.optional-dependencies]
|
|
@@ -53,6 +55,8 @@ gurobi = [
|
|
|
53
55
|
"gurobipy>=13.0.2",
|
|
54
56
|
]
|
|
55
57
|
|
|
58
|
+
[project.scripts]
|
|
59
|
+
distopf = "distopf.cli:distopf"
|
|
56
60
|
|
|
57
61
|
[tool.mypy]
|
|
58
62
|
[[tool.mypy.overrides]]
|
|
@@ -40,7 +40,12 @@ logger.addHandler(_logging.NullHandler())
|
|
|
40
40
|
from distopf.cases import CASES_DIR
|
|
41
41
|
from distopf.api import Case, create_case, replay
|
|
42
42
|
from distopf.results import PowerFlowResult
|
|
43
|
-
from distopf.fbs import
|
|
43
|
+
from distopf.fbs import (
|
|
44
|
+
replay_exact_power_flow,
|
|
45
|
+
replay_exact_power_flow_from_opf_result,
|
|
46
|
+
run_fbs_from_saved_results,
|
|
47
|
+
run_fbs_with_opf_setpoints,
|
|
48
|
+
)
|
|
44
49
|
|
|
45
50
|
# =============================================================================
|
|
46
51
|
# Matrix models and solvers - loaded eagerly as they're commonly used
|
|
@@ -85,6 +90,7 @@ from distopf.plot import (
|
|
|
85
90
|
from distopf.wrappers.matrix_wrapper import create_model, auto_solve
|
|
86
91
|
from distopf.fbs import fbs_solve, FBS
|
|
87
92
|
|
|
93
|
+
from distopf.utils.results_comparison import compare_voltage_results, compare_voltage_tables
|
|
88
94
|
from distopf.utils.input_handlers import (
|
|
89
95
|
get,
|
|
90
96
|
handle_bus_input,
|
|
@@ -141,6 +147,9 @@ __all__ = [
|
|
|
141
147
|
"replay",
|
|
142
148
|
# Result containers
|
|
143
149
|
"PowerFlowResult",
|
|
150
|
+
"replay_exact_power_flow",
|
|
151
|
+
"replay_exact_power_flow_from_opf_result",
|
|
152
|
+
"run_fbs_from_saved_results",
|
|
144
153
|
"run_fbs_with_opf_setpoints",
|
|
145
154
|
# Power flow solver
|
|
146
155
|
"fbs_solve",
|
|
@@ -164,6 +173,8 @@ __all__ = [
|
|
|
164
173
|
"cp_obj_curtail",
|
|
165
174
|
"cp_obj_curtail_lp",
|
|
166
175
|
"cp_obj_none",
|
|
176
|
+
"compare_voltage_results",
|
|
177
|
+
"compare_voltage_tables",
|
|
167
178
|
"plot_network",
|
|
168
179
|
"plot_voltages",
|
|
169
180
|
"plot_power_flows",
|