diff --git a/balances-adjustment/src/main/java/com/powsybl/balances_adjustment/balance_computation/BalanceComputationImpl.java b/balances-adjustment/src/main/java/com/powsybl/balances_adjustment/balance_computation/BalanceComputationImpl.java index 2bfabf50..3315e1f1 100644 --- a/balances-adjustment/src/main/java/com/powsybl/balances_adjustment/balance_computation/BalanceComputationImpl.java +++ b/balances-adjustment/src/main/java/com/powsybl/balances_adjustment/balance_computation/BalanceComputationImpl.java @@ -121,6 +121,7 @@ public CompletableFuture run(String workingStateId, Ba // Change the workingStateId with final scaling network.getVariantManager().setWorkingVariant(workingStateId); scaleBalancedNetwork(previousScalingMap); + runLoadFlow(loadFlow, workingStateId); result = new BalanceComputationResult(BalanceComputationResult.Status.SUCCESS, iterationCounter, previousScalingMap); } else { @@ -142,10 +143,6 @@ public CompletableFuture run(String workingStateId, Ba LOGGER.info(" Network areas : {} are balanced after {} iterations", networkAreasName, result.getIterationCount()); } else { - // return the network at initial working state id - network.getVariantManager().removeVariant(workingVariantCopyId); - network.getVariantManager().cloneVariant(workingStateId, workingVariantCopyId); - network.getVariantManager().setWorkingVariant(workingVariantCopyId); LOGGER.error(" Network areas are unbalanced after {} iterations", iterationCounter); } diff --git a/balances-adjustment/src/test/java/com/powsybl/balances_adjustment/balance_computation/BalanceComputationImplDcTest.java b/balances-adjustment/src/test/java/com/powsybl/balances_adjustment/balance_computation/BalanceComputationImplDcTest.java index 8fe735af..56588496 100644 --- a/balances-adjustment/src/test/java/com/powsybl/balances_adjustment/balance_computation/BalanceComputationImplDcTest.java +++ b/balances-adjustment/src/test/java/com/powsybl/balances_adjustment/balance_computation/BalanceComputationImplDcTest.java @@ -40,6 +40,7 @@ public class BalanceComputationImplDcTest { private BalanceComputationParameters parameters; private BalanceComputationFactory balanceComputationFactory; private LoadFlowFactory loadFlowFactory; + private String newStateId = "NewStateId"; @Before public void setUp() { @@ -96,6 +97,34 @@ public void testBalancedNetworkAfter1Scaling() { } + @Test + public void testBalancesAdjustmentWithDifferentStateId() { + networkAreaNetPositionTargetMap = new HashMap<>(); + networkAreaNetPositionTargetMap.put(countryAreaFR, 1100.); + + testNetwork1.getVariantManager().cloneVariant(testNetwork1.getVariantManager().getWorkingVariantId(), newStateId); + + Map networkAreasScalableMap1 = new HashMap<>(); + Scalable scalable1 = Scalable.onGenerator("FFR1AA1 _generator"); + Scalable scalable2 = Scalable.onGenerator("FFR2AA1 _generator"); + Scalable scalable3 = Scalable.onGenerator("FFR3AA1 _generator"); + + networkAreasScalableMap1.put(countryAreaFR, Scalable.proportional(28.f, scalable1, 28f, scalable2, 44.f, scalable3)); + + BalanceComputation balanceComputation = balanceComputationFactory.create(testNetwork1, networkAreaNetPositionTargetMap, networkAreasScalableMap1, loadFlowFactory, computationManager, 1); + + BalanceComputationResult result = balanceComputation.run(newStateId, parameters).join(); + + assertEquals(BalanceComputationResult.Status.SUCCESS, result.getStatus()); + assertEquals(2, result.getIterationCount()); + // Check net position does not change with the initial state id after balances + assertEquals(1000., countryAreaFR.getNetPosition(testNetwork1), 1.); + // Check target net position after balances with the new state id + testNetwork1.getVariantManager().setWorkingVariant(newStateId); + assertEquals(1100., countryAreaFR.getNetPosition(testNetwork1), 1.); + + } + @Test public void testUnBalancedNetwork() {