From c7c3b48f527f1eefd8dba606f9c547b4481a83d5 Mon Sep 17 00:00:00 2001 From: Jerry Guo Date: Fri, 24 Oct 2025 21:58:32 +0200 Subject: [PATCH 1/5] added the fix and two repro test case Signed-off-by: Jerry Guo --- .../optimizer/tap_position_optimizer.hpp | 15 +++- .../auto-tap-changer-repro-any/input.json | 71 +++++++++++++++++++ .../input.json.license | 3 + .../auto-tap-changer-repro-any/params.json | 10 +++ .../params.json.license | 3 + .../sym_output.json | 15 ++++ .../sym_output.json.license | 3 + .../input.json | 71 +++++++++++++++++++ .../input.json.license | 3 + .../params.json | 10 +++ .../params.json.license | 3 + .../sym_output.json | 15 ++++ .../sym_output.json.license | 3 + 13 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json.license diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/optimizer/tap_position_optimizer.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/optimizer/tap_position_optimizer.hpp index 3b42ffb5ac..e99c7b0fc7 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/optimizer/tap_position_optimizer.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/optimizer/tap_position_optimizer.hpp @@ -800,6 +800,10 @@ class TapPositionOptimizerImpl, StateCalculator, return tap_pos; } + void rewind(IntS tap_pos, IntS tap_min, IntS tap_max) { + reset(tap_pos, tap_min, tap_max, control_at_tap_side_); + } + private: void reset(IntS tap_pos, IntS tap_min, IntS tap_max, bool control_at_tap_side) { last_down_ = false; @@ -1134,7 +1138,7 @@ class TapPositionOptimizerImpl, StateCalculator, return; } - if (strategy_ == OptimizerStrategy::fast_any) { + if (strategy_ == OptimizerStrategy::fast_any && cmp == 0) { // NOLINT(modernize-use-nullptr) tap_changed = false; return; } @@ -1143,6 +1147,15 @@ class TapPositionOptimizerImpl, StateCalculator, current_bs.recalibrate(strategy_max); IntS const tap_pos = current_bs.repropose_tap(strategy_max, previous_down, tap_changed); + // The new tap pos is only valid in a cmp == equivalent situation + // in other words, a same tap pos in a non equivalent situation means + // the binary search cannot find a valid tap position + if (tap_changed && cmp != 0 && !current_bs.get_end_of_bs()) { + current_bs.rewind(tap_pos, transformer.tap_min(), transformer.tap_max()); + throw MaxIterationReached{ + std::format("TapPositionOptimizer::binary_search: no possible tap valid between tap {} and tap {}", + transformer.tap_min(), transformer.tap_max())}; + } add_tap_pos_update(tap_pos, transformer, update_data); }; regulator.transformer.apply(adjust_transformer_); diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json new file mode 100644 index 0000000000..dd4e61ea27 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json @@ -0,0 +1,71 @@ +{ + "version": "1.0", + "type": "input", + "is_batch": false, + "attributes": {}, + "data": { + "node": [ + { + "id": 1, + "u_rated": 10000 + }, + { + "id": 2, + "u_rated": 400 + } + ], + "source": [ + { + "id": 3, + "node": 1, + "status": 1, + "u_ref": 1 + } + ], + "sym_load": [ + { + "id": 4, + "node": 2, + "status": 1, + "type": 0, + "p_specified": 5000, + "q_specified": 1015 + } + ], + "transformer": [ + { + "id": 5, + "from_node": 1, + "to_node": 2, + "from_status": 1, + "to_status": 1, + "u1": 10000, + "u2": 400, + "sn": 100000, + "uk": 0.04, + "pk": 1000, + "i0": 0.01, + "p0": 100, + "winding_from": 2, + "winding_to": 2, + "clock": 0, + "tap_side": 0, + "tap_pos": 2, + "tap_min": 1, + "tap_max": 5, + "tap_nom": 3, + "tap_size": 250 + } + ], + "transformer_tap_regulator": [ + { + "id": 6, + "regulated_object": 5, + "status": 1, + "control_side": 1, + "u_set": 400, + "u_band": 0.00001 + } + ] + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json new file mode 100644 index 0000000000..015931f30a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json @@ -0,0 +1,10 @@ +{ + "calculation_method": "newton_raphson", + "tap_changing_strategy": "any_valid_tap", + "rtol": 1e-05, + "atol": 1e-05, + "raises": { + "raises": "MaxIterationReached", + "reason": "TapPositionOptimizer::binary_search" + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json new file mode 100644 index 0000000000..021aa4b297 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json @@ -0,0 +1,15 @@ +{ + "version": "1.0", + "type": "sym_output", + "is_batch": false, + "attributes": {}, + "data": { + "node": [ + {"id": 1, "u_pu": 1, "u": 9999.9}, + {"id": 2, "u_pu": 1.02456, "u": 409.8260092982474} + ], + "transformer_tap_regulator": [ + {"id": 6, "tap_pos": 2} + ] + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json new file mode 100644 index 0000000000..dd4e61ea27 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json @@ -0,0 +1,71 @@ +{ + "version": "1.0", + "type": "input", + "is_batch": false, + "attributes": {}, + "data": { + "node": [ + { + "id": 1, + "u_rated": 10000 + }, + { + "id": 2, + "u_rated": 400 + } + ], + "source": [ + { + "id": 3, + "node": 1, + "status": 1, + "u_ref": 1 + } + ], + "sym_load": [ + { + "id": 4, + "node": 2, + "status": 1, + "type": 0, + "p_specified": 5000, + "q_specified": 1015 + } + ], + "transformer": [ + { + "id": 5, + "from_node": 1, + "to_node": 2, + "from_status": 1, + "to_status": 1, + "u1": 10000, + "u2": 400, + "sn": 100000, + "uk": 0.04, + "pk": 1000, + "i0": 0.01, + "p0": 100, + "winding_from": 2, + "winding_to": 2, + "clock": 0, + "tap_side": 0, + "tap_pos": 2, + "tap_min": 1, + "tap_max": 5, + "tap_nom": 3, + "tap_size": 250 + } + ], + "transformer_tap_regulator": [ + { + "id": 6, + "regulated_object": 5, + "status": 1, + "control_side": 1, + "u_set": 400, + "u_band": 0.00001 + } + ] + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json new file mode 100644 index 0000000000..3b5f8ee466 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json @@ -0,0 +1,10 @@ +{ + "calculation_method": "newton_raphson", + "tap_changing_strategy": "fast_any_tap", + "rtol": 1e-05, + "atol": 1e-05, + "raises": { + "raises": "MaxIterationReached", + "reason": "TapPositionOptimizer::binary_search" + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json new file mode 100644 index 0000000000..021aa4b297 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json @@ -0,0 +1,15 @@ +{ + "version": "1.0", + "type": "sym_output", + "is_batch": false, + "attributes": {}, + "data": { + "node": [ + {"id": 1, "u_pu": 1, "u": 9999.9}, + {"id": 2, "u_pu": 1.02456, "u": 409.8260092982474} + ], + "transformer_tap_regulator": [ + {"id": 6, "tap_pos": 2} + ] + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file From 56c34b4a8756e50ccb338d1c2a186fb0f72ccfcf Mon Sep 17 00:00:00 2001 From: Jerry Guo Date: Sat, 25 Oct 2025 08:55:14 +0200 Subject: [PATCH 2/5] copilot comment Signed-off-by: Jerry Guo --- .../optimizer/tap_position_optimizer.hpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/optimizer/tap_position_optimizer.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/optimizer/tap_position_optimizer.hpp index e99c7b0fc7..6a88941fb5 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/optimizer/tap_position_optimizer.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/optimizer/tap_position_optimizer.hpp @@ -1147,14 +1147,15 @@ class TapPositionOptimizerImpl, StateCalculator, current_bs.recalibrate(strategy_max); IntS const tap_pos = current_bs.repropose_tap(strategy_max, previous_down, tap_changed); - // The new tap pos is only valid in a cmp == equivalent situation + // The new same tap pos is only valid in a cmp == equivalent situation // in other words, a same tap pos in a non equivalent situation means // the binary search cannot find a valid tap position - if (tap_changed && cmp != 0 && !current_bs.get_end_of_bs()) { + // _tap_changed_ is an aggregated flag with _inevitable_run_, so we can not use it here + if (tap_pos == transformer.tap_pos() && cmp != 0 && !current_bs.get_end_of_bs()) { current_bs.rewind(tap_pos, transformer.tap_min(), transformer.tap_max()); - throw MaxIterationReached{ - std::format("TapPositionOptimizer::binary_search: no possible tap valid between tap {} and tap {}", - transformer.tap_min(), transformer.tap_max())}; + throw MaxIterationReached{std::format( + "TapPositionOptimizer::binary_search: no valid tap position found between tap {} and tap {}", + transformer.tap_min(), transformer.tap_max())}; } add_tap_pos_update(tap_pos, transformer, update_data); }; From 0a089dba3c65ec30a216ea53b01ce6c846b3b9e0 Mon Sep 17 00:00:00 2001 From: Jerry Guo Date: Sat, 25 Oct 2025 18:50:34 +0200 Subject: [PATCH 3/5] add test cases for all strategies Signed-off-by: Jerry Guo --- .../auto-tap-changer-meshed-any-max-iter/params.json | 2 +- .../input.json | 0 .../input.json.license | 0 .../params.json | 0 .../params.json.license | 0 .../sym_output.json | 0 .../sym_output.json.license | 0 .../input.json | 0 .../input.json.license | 0 .../params.json | 0 .../params.json.license | 0 .../sym_output.json | 0 .../sym_output.json.license | 0 13 files changed, 1 insertion(+), 1 deletion(-) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-any => auto-tap-changer-small-u-band-max-iter-any}/input.json (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-any => auto-tap-changer-small-u-band-max-iter-any}/input.json.license (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-any => auto-tap-changer-small-u-band-max-iter-any}/params.json (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-any => auto-tap-changer-small-u-band-max-iter-any}/params.json.license (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-any => auto-tap-changer-small-u-band-max-iter-any}/sym_output.json (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-any => auto-tap-changer-small-u-band-max-iter-any}/sym_output.json.license (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-fast-any => auto-tap-changer-small-u-band-max-iter-fast-any}/input.json (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-fast-any => auto-tap-changer-small-u-band-max-iter-fast-any}/input.json.license (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-fast-any => auto-tap-changer-small-u-band-max-iter-fast-any}/params.json (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-fast-any => auto-tap-changer-small-u-band-max-iter-fast-any}/params.json.license (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-fast-any => auto-tap-changer-small-u-band-max-iter-fast-any}/sym_output.json (100%) rename tests/data/power_flow/automatic-tap-regulator/{auto-tap-changer-repro-fast-any => auto-tap-changer-small-u-band-max-iter-fast-any}/sym_output.json.license (100%) diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-any-max-iter/params.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-any-max-iter/params.json index 2184b5c1ca..a7e3bd401d 100644 --- a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-any-max-iter/params.json +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-any-max-iter/params.json @@ -1,6 +1,6 @@ { "calculation_method": "newton_raphson", - "tap_changing_strategy": "any_valid_tap", + "tap_changing_strategy": "fast_any_tap", "rtol": 1e-05, "atol": 1e-05, "raises": { diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/input.json similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/input.json diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/input.json.license similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/input.json.license rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/input.json.license diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/params.json similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/params.json diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/params.json.license similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/params.json.license rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/params.json.license diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/sym_output.json similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/sym_output.json diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/sym_output.json.license similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-any/sym_output.json.license rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-any/sym_output.json.license diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/input.json similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/input.json diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/input.json.license similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/input.json.license rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/input.json.license diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/params.json similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/params.json diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/params.json.license similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/params.json.license rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/params.json.license diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/sym_output.json similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/sym_output.json diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/sym_output.json.license similarity index 100% rename from tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-repro-fast-any/sym_output.json.license rename to tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-fast-any/sym_output.json.license From 7ae2c218b3aea3b614dd67f7cf76c5bbde84097a Mon Sep 17 00:00:00 2001 From: Jerry Guo <6221579+Jerry-Jinfeng-Guo@users.noreply.github.com> Date: Tue, 28 Oct 2025 08:22:57 +0100 Subject: [PATCH 4/5] Update tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-any-max-iter/params.json Signed-off-by: Jerry Guo <6221579+Jerry-Jinfeng-Guo@users.noreply.github.com> --- .../auto-tap-changer-meshed-any-max-iter/params.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-any-max-iter/params.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-any-max-iter/params.json index a7e3bd401d..2184b5c1ca 100644 --- a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-any-max-iter/params.json +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-any-max-iter/params.json @@ -1,6 +1,6 @@ { "calculation_method": "newton_raphson", - "tap_changing_strategy": "fast_any_tap", + "tap_changing_strategy": "any_valid_tap", "rtol": 1e-05, "atol": 1e-05, "raises": { From 0a158cd6479eb9a06c34b85154850880e0b5467d Mon Sep 17 00:00:00 2001 From: Jerry Guo Date: Tue, 28 Oct 2025 10:04:56 +0100 Subject: [PATCH 5/5] added a similar test for the meshed max iter Signed-off-by: Jerry Guo --- .../input.json | 59 +++++++++++++++ .../input.json.license | 3 + .../params.json | 10 +++ .../params.json.license | 3 + .../sym_output.json | 7 ++ .../sym_output.json.license | 3 + .../input.json | 71 +++++++++++++++++++ .../input.json.license | 3 + .../params.json | 10 +++ .../params.json.license | 3 + .../sym_output.json | 15 ++++ .../sym_output.json.license | 3 + .../input.json | 71 +++++++++++++++++++ .../input.json.license | 3 + .../params.json | 10 +++ .../params.json.license | 3 + .../sym_output.json | 15 ++++ .../sym_output.json.license | 3 + 18 files changed, 295 insertions(+) create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/input.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/input.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/params.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/params.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/sym_output.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/sym_output.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/input.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/input.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/params.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/params.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/sym_output.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/sym_output.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/input.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/input.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/params.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/params.json.license create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/sym_output.json create mode 100644 tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/sym_output.json.license diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/input.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/input.json new file mode 100644 index 0000000000..3b748a1cc9 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/input.json @@ -0,0 +1,59 @@ +{ + "version": "1.0", + "type": "input", + "is_batch": false, + "attributes": {}, + "data": { + "node": [ + {"id": 0, "u_rated": 10000}, + {"id": 1, "u_rated": 10000}, + {"id": 2, "u_rated": 10000}, + {"id": 3, "u_rated": 10000}, + {"id": 4, "u_rated": 10000}, + {"id": 5, "u_rated": 10000}, + {"id": 6, "u_rated": 10000}, + {"id": 7, "u_rated": 400}, + {"id": 8, "u_rated": 400}, + {"id": 9, "u_rated": 400}, + {"id": 10, "u_rated": 400} + ], + "line": [ + {"id": 11, "from_node": 0, "to_node": 1, "from_status": 1, "to_status": 1, "r1": 0.005, "x1": 0.5, "c1": 0, "tan1": 0}, + {"id": 12, "from_node": 0, "to_node": 2, "from_status": 1, "to_status": 1, "r1": 0.1, "x1": 0.6, "c1": 0, "tan1": 0}, + {"id": 13, "from_node": 3, "to_node": 5, "from_status": 1, "to_status": 1, "r1": 0.005, "x1": 0.5, "c1": 0, "tan1": 0}, + {"id": 14, "from_node": 4, "to_node": 6, "from_status": 1, "to_status": 1, "r1": 0.003, "x1": 0.3, "c1": 0, "tan1": 0}, + {"id": 15, "from_node": 7, "to_node": 9, "from_status": 1, "to_status": 1, "r1": 0.005, "x1": 0.5, "c1": 0, "tan1": 0}, + {"id": 16, "from_node": 8, "to_node": 9, "from_status": 1, "to_status": 1, "r1": 0.005, "x1": 0.6, "c1": 0, "tan1": 0} + ], + "transformer": [ + {"id": 17, "from_node": 1, "to_node": 3, "from_status": 1, "to_status": 1, "u1": 10000, "u2": 10000, "sn": 300000, "uk": 0.0005, "pk": 1000, "i0": 0, "p0": 0, "winding_from": 2, "winding_to": 1, "clock": 5, "tap_side": 0, "tap_pos": 0, "tap_min": -10, "tap_max": 10, "tap_size": 100}, + {"id": 18, "from_node": 2, "to_node": 4, "from_status": 1, "to_status": 1, "u1": 10000, "u2": 10000, "sn": 300000, "uk": 0.0005, "pk": 1000, "i0": 0, "p0": 0, "winding_from": 2, "winding_to": 1, "clock": 5, "tap_side": 0, "tap_pos": 0, "tap_min": -10, "tap_max": 10, "tap_size": 100}, + {"id": 19, "from_node": 5, "to_node": 7, "from_status": 1, "to_status": 1, "u1": 10000, "u2": 400, "sn": 300000, "uk": 0.0005, "pk": 1000, "i0": 0, "p0": 0, "winding_from": 2, "winding_to": 1, "clock": 5, "tap_side": 0, "tap_pos": 0, "tap_min": -10, "tap_max": 10, "tap_size": 20}, + {"id": 20, "from_node": 6, "to_node": 8, "from_status": 1, "to_status": 1, "u1": 10000, "u2": 400, "sn": 300000, "uk": 0.0005, "pk": 1000, "i0": 0, "p0": 0, "winding_from": 2, "winding_to": 1, "clock": 5, "tap_side": 0, "tap_pos": 0, "tap_min": -10, "tap_max": 10, "tap_size": 20}, + {"id": 21, "from_node": 9, "to_node": 10, "from_status": 1, "to_status": 1, "u1": 400, "u2": 400, "sn": 300000, "uk": 0.0005, "pk": 1000, "i0": 0, "p0": 0, "winding_from": 2, "winding_to": 1, "clock": 5, "tap_side": 0, "tap_pos": 0, "tap_min": -10, "tap_max": 10, "tap_size": 20} + ], + "source": [ + {"id": 22, "node": 0, "status": 1, "u_ref": 1} + ], + "sym_load": [ + {"id": 23, "node": 0, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 24, "node": 1, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 25, "node": 2, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 26, "node": 3, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 27, "node": 4, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 28, "node": 5, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 29, "node": 6, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 30, "node": 7, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 31, "node": 8, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 32, "node": 9, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000}, + {"id": 33, "node": 10, "status": 1, "type": 0, "p_specified": 100000, "q_specified": 10000} + ], + "transformer_tap_regulator": [ + {"id": 34, "regulated_object": 17, "status": 1, "control_side": 1, "u_set": 10000, "u_band": 300}, + {"id": 35, "regulated_object": 18, "status": 1, "control_side": 1, "u_set": 10000, "u_band": 300}, + {"id": 36, "regulated_object": 19, "status": 1, "control_side": 1, "u_set": 400, "u_band": 5}, + {"id": 37, "regulated_object": 20, "status": 1, "control_side": 1, "u_set": 400, "u_band": 5}, + {"id": 38, "regulated_object": 21, "status": 1, "control_side": 1, "u_set": 400, "u_band": 5} + ] + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/input.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/input.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/input.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/params.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/params.json new file mode 100644 index 0000000000..a7e3bd401d --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/params.json @@ -0,0 +1,10 @@ +{ + "calculation_method": "newton_raphson", + "tap_changing_strategy": "fast_any_tap", + "rtol": 1e-05, + "atol": 1e-05, + "raises": { + "raises": "MaxIterationReached", + "reason": "TapPositionOptimizer::iterate" + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/params.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/params.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/params.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/sym_output.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/sym_output.json new file mode 100644 index 0000000000..682b959f00 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/sym_output.json @@ -0,0 +1,7 @@ +{ + "version": "1.0", + "type": "sym_output", + "is_batch": false, + "attributes": {}, + "data": {} +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/sym_output.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/sym_output.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-meshed-fast-any-max-iter/sym_output.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/input.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/input.json new file mode 100644 index 0000000000..dd4e61ea27 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/input.json @@ -0,0 +1,71 @@ +{ + "version": "1.0", + "type": "input", + "is_batch": false, + "attributes": {}, + "data": { + "node": [ + { + "id": 1, + "u_rated": 10000 + }, + { + "id": 2, + "u_rated": 400 + } + ], + "source": [ + { + "id": 3, + "node": 1, + "status": 1, + "u_ref": 1 + } + ], + "sym_load": [ + { + "id": 4, + "node": 2, + "status": 1, + "type": 0, + "p_specified": 5000, + "q_specified": 1015 + } + ], + "transformer": [ + { + "id": 5, + "from_node": 1, + "to_node": 2, + "from_status": 1, + "to_status": 1, + "u1": 10000, + "u2": 400, + "sn": 100000, + "uk": 0.04, + "pk": 1000, + "i0": 0.01, + "p0": 100, + "winding_from": 2, + "winding_to": 2, + "clock": 0, + "tap_side": 0, + "tap_pos": 2, + "tap_min": 1, + "tap_max": 5, + "tap_nom": 3, + "tap_size": 250 + } + ], + "transformer_tap_regulator": [ + { + "id": 6, + "regulated_object": 5, + "status": 1, + "control_side": 1, + "u_set": 400, + "u_band": 0.00001 + } + ] + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/input.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/input.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/input.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/params.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/params.json new file mode 100644 index 0000000000..7ccff98f3b --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/params.json @@ -0,0 +1,10 @@ +{ + "calculation_method": "newton_raphson", + "tap_changing_strategy": "max_voltage_tap", + "rtol": 1e-05, + "atol": 1e-05, + "raises": { + "raises": "MaxIterationReached", + "reason": "TapPositionOptimizer::binary_search" + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/params.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/params.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/params.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/sym_output.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/sym_output.json new file mode 100644 index 0000000000..021aa4b297 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/sym_output.json @@ -0,0 +1,15 @@ +{ + "version": "1.0", + "type": "sym_output", + "is_batch": false, + "attributes": {}, + "data": { + "node": [ + {"id": 1, "u_pu": 1, "u": 9999.9}, + {"id": 2, "u_pu": 1.02456, "u": 409.8260092982474} + ], + "transformer_tap_regulator": [ + {"id": 6, "tap_pos": 2} + ] + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/sym_output.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/sym_output.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-max/sym_output.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/input.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/input.json new file mode 100644 index 0000000000..dd4e61ea27 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/input.json @@ -0,0 +1,71 @@ +{ + "version": "1.0", + "type": "input", + "is_batch": false, + "attributes": {}, + "data": { + "node": [ + { + "id": 1, + "u_rated": 10000 + }, + { + "id": 2, + "u_rated": 400 + } + ], + "source": [ + { + "id": 3, + "node": 1, + "status": 1, + "u_ref": 1 + } + ], + "sym_load": [ + { + "id": 4, + "node": 2, + "status": 1, + "type": 0, + "p_specified": 5000, + "q_specified": 1015 + } + ], + "transformer": [ + { + "id": 5, + "from_node": 1, + "to_node": 2, + "from_status": 1, + "to_status": 1, + "u1": 10000, + "u2": 400, + "sn": 100000, + "uk": 0.04, + "pk": 1000, + "i0": 0.01, + "p0": 100, + "winding_from": 2, + "winding_to": 2, + "clock": 0, + "tap_side": 0, + "tap_pos": 2, + "tap_min": 1, + "tap_max": 5, + "tap_nom": 3, + "tap_size": 250 + } + ], + "transformer_tap_regulator": [ + { + "id": 6, + "regulated_object": 5, + "status": 1, + "control_side": 1, + "u_set": 400, + "u_band": 0.00001 + } + ] + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/input.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/input.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/input.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/params.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/params.json new file mode 100644 index 0000000000..26d2a33458 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/params.json @@ -0,0 +1,10 @@ +{ + "calculation_method": "newton_raphson", + "tap_changing_strategy": "min_voltage_tap", + "rtol": 1e-05, + "atol": 1e-05, + "raises": { + "raises": "MaxIterationReached", + "reason": "TapPositionOptimizer::binary_search" + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/params.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/params.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/params.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/sym_output.json b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/sym_output.json new file mode 100644 index 0000000000..021aa4b297 --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/sym_output.json @@ -0,0 +1,15 @@ +{ + "version": "1.0", + "type": "sym_output", + "is_batch": false, + "attributes": {}, + "data": { + "node": [ + {"id": 1, "u_pu": 1, "u": 9999.9}, + {"id": 2, "u_pu": 1.02456, "u": 409.8260092982474} + ], + "transformer_tap_regulator": [ + {"id": 6, "tap_pos": 2} + ] + } +} \ No newline at end of file diff --git a/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/sym_output.json.license b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/sym_output.json.license new file mode 100644 index 0000000000..2fcbfaeb5a --- /dev/null +++ b/tests/data/power_flow/automatic-tap-regulator/auto-tap-changer-small-u-band-max-iter-min/sym_output.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Contributors to the Power Grid Model project + +SPDX-License-Identifier: MPL-2.0 \ No newline at end of file