From 0f7bdecaa85456dba48b47dca7d4a99ea0b59ee8 Mon Sep 17 00:00:00 2001 From: CHEN Roxane Date: Mon, 10 Nov 2025 12:17:12 +0100 Subject: [PATCH 1/4] add ptdf sensi ampere support Signed-off-by: CHEN Roxane --- .../AbstractSimpleSensitivityProvider.java | 19 +++++++++ .../sensitivityanalysis/LoadflowProvider.java | 17 -------- .../PtdfSensitivityProvider.java | 40 ++++++------------- .../PtdfSensitivityProviderTest.java | 26 ++++++++++-- 4 files changed, 54 insertions(+), 48 deletions(-) diff --git a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/AbstractSimpleSensitivityProvider.java b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/AbstractSimpleSensitivityProvider.java index 7faa54c949..d79039bdff 100644 --- a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/AbstractSimpleSensitivityProvider.java +++ b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/AbstractSimpleSensitivityProvider.java @@ -7,6 +7,7 @@ package com.powsybl.openrao.sensitivityanalysis; +import com.powsybl.iidm.network.TwoSides; import com.powsybl.openrao.commons.OpenRaoException; import com.powsybl.openrao.commons.Unit; import com.powsybl.openrao.commons.logs.OpenRaoLoggerProvider; @@ -14,6 +15,7 @@ import com.powsybl.openrao.data.crac.api.cnec.FlowCnec; import com.powsybl.iidm.network.Network; import com.powsybl.sensitivity.SensitivityFactor; +import com.powsybl.sensitivity.SensitivityFunctionType; import java.util.*; @@ -95,4 +97,21 @@ public void disableFactorsForBaseCaseSituation() { public void enableFactorsForBaseCaseSituation() { this.afterContingencyOnly = false; } + + Set getSensitivityFunctionTypes(Set sides) { + Set sensitivityFunctionTypes = new HashSet<>(); + if (factorsInMegawatt && sides.contains(TwoSides.ONE)) { + sensitivityFunctionTypes.add(SensitivityFunctionType.BRANCH_ACTIVE_POWER_1); + } + if (factorsInMegawatt && sides.contains(TwoSides.TWO)) { + sensitivityFunctionTypes.add(SensitivityFunctionType.BRANCH_ACTIVE_POWER_2); + } + if (factorsInAmpere && sides.contains(TwoSides.ONE)) { + sensitivityFunctionTypes.add(SensitivityFunctionType.BRANCH_CURRENT_1); + } + if (factorsInAmpere && sides.contains(TwoSides.TWO)) { + sensitivityFunctionTypes.add(SensitivityFunctionType.BRANCH_CURRENT_2); + } + return sensitivityFunctionTypes; + } } diff --git a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/LoadflowProvider.java b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/LoadflowProvider.java index dcc63e034a..825eef3339 100644 --- a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/LoadflowProvider.java +++ b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/LoadflowProvider.java @@ -159,21 +159,4 @@ private List> cnecToSensitivityFunctions(N } } - private Set getSensitivityFunctionTypes(Set sides) { - Set sensitivityFunctionTypes = new HashSet<>(); - if (factorsInMegawatt && sides.contains(TwoSides.ONE)) { - sensitivityFunctionTypes.add(SensitivityFunctionType.BRANCH_ACTIVE_POWER_1); - } - if (factorsInMegawatt && sides.contains(TwoSides.TWO)) { - sensitivityFunctionTypes.add(SensitivityFunctionType.BRANCH_ACTIVE_POWER_2); - } - if (factorsInAmpere && sides.contains(TwoSides.ONE)) { - sensitivityFunctionTypes.add(SensitivityFunctionType.BRANCH_CURRENT_1); - } - if (factorsInAmpere && sides.contains(TwoSides.TWO)) { - sensitivityFunctionTypes.add(SensitivityFunctionType.BRANCH_CURRENT_2); - } - return sensitivityFunctionTypes; - } - } diff --git a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProvider.java b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProvider.java index 437e72b841..3dae79cbdb 100644 --- a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProvider.java +++ b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProvider.java @@ -8,7 +8,6 @@ package com.powsybl.openrao.sensitivityanalysis; import com.powsybl.openrao.commons.Unit; -import com.powsybl.openrao.commons.logs.OpenRaoLoggerProvider; import com.powsybl.openrao.data.crac.api.NetworkElement; import com.powsybl.openrao.data.crac.api.cnec.FlowCnec; import com.powsybl.iidm.network.TwoSides; @@ -19,7 +18,6 @@ import com.powsybl.glsk.commons.ZonalData; import com.powsybl.iidm.network.Network; import com.powsybl.sensitivity.SensitivityFactor; -import com.powsybl.sensitivity.SensitivityFunctionType; import com.powsybl.sensitivity.SensitivityVariableSet; import com.powsybl.sensitivity.SensitivityVariableType; @@ -34,13 +32,6 @@ public class PtdfSensitivityProvider extends AbstractSimpleSensitivityProvider { PtdfSensitivityProvider(ZonalData glsk, Set cnecs, Set units) { super(cnecs, units); - - // todo : handle PTDFs in AMPERE - if (factorsInAmpere || !factorsInMegawatt) { - OpenRaoLoggerProvider.TECHNICAL_LOGS.warn("PtdfSensitivity provider currently only handle Megawatt unit"); - factorsInMegawatt = true; - factorsInAmpere = false; - } this.glsk = Objects.requireNonNull(glsk); } @@ -82,17 +73,19 @@ private List getFactors(ContingencyContext contingencyContext Map> networkElementsAndSides = new HashMap<>(); flowCnecsStream.forEach(cnec -> networkElementsAndSides.computeIfAbsent(cnec.getNetworkElement(), k -> new HashSet<>()).addAll(cnec.getMonitoredSides())); networkElementsAndSides - .forEach((ne, sides) -> - sides.forEach(side -> - mapCountryLinearGlsk.values().stream() - .map(linearGlsk -> new SensitivityFactor( - sideToActivePowerFunctionType(side), - ne.getId(), - SensitivityVariableType.INJECTION_ACTIVE_POWER, - linearGlsk.getId(), - true, - contingencyContext)) - .forEach(factors::add))); + .forEach((ne, sides) -> { + // we allow the computation of both function types (branch_active_power and branch_current) at the same time to match loadFlowProvider behavior + getSensitivityFunctionTypes(sides).forEach(functionType -> + mapCountryLinearGlsk.values().stream() + .map(linearGlsk -> new SensitivityFactor( + functionType, + ne.getId(), + SensitivityVariableType.INJECTION_ACTIVE_POWER, + linearGlsk.getId(), + true, + contingencyContext)) + .forEach(factors::add)); + }); return factors; } @@ -101,13 +94,6 @@ public Map getHvdcs() { return new HashMap<>(); } - private SensitivityFunctionType sideToActivePowerFunctionType(TwoSides side) { - if (side.equals(TwoSides.ONE)) { - return SensitivityFunctionType.BRANCH_ACTIVE_POWER_1; - } else { - return SensitivityFunctionType.BRANCH_ACTIVE_POWER_2; - } - } @Override public List getVariableSets() { diff --git a/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java b/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java index 7b071e40cf..185829d9d4 100644 --- a/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java +++ b/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java @@ -16,6 +16,7 @@ import com.powsybl.glsk.commons.ZonalDataImpl; import com.powsybl.iidm.network.Network; import com.powsybl.sensitivity.SensitivityFactor; +import com.powsybl.sensitivity.SensitivityFunctionType; import com.powsybl.sensitivity.SensitivityVariableSet; import com.powsybl.sensitivity.WeightedSensitivityVariable; import org.junit.jupiter.api.BeforeEach; @@ -51,12 +52,28 @@ private static ZonalData glsk() { } @Test - void getFactorsOnCommonCrac() { + void getFactorsOnCommonCracInMegawatt() { PtdfSensitivityProvider ptdfSensitivityProvider = new PtdfSensitivityProvider(glskMock, crac.getFlowCnecs(), Collections.singleton(Unit.MEGAWATT)); List sensitivityFactors = ptdfSensitivityProvider.getBasecaseFactors(network); assertEquals(8, sensitivityFactors.size()); assertTrue(sensitivityFactors.stream().anyMatch(sensitivityFactor -> sensitivityFactor.getFunctionId().contains("FFR2AA1 DDE3AA1 1") && sensitivityFactor.getVariableId().contains("10YCB-GERMANY--8"))); + assertTrue(sensitivityFactors.stream().allMatch(sensitivityFactor -> sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_ACTIVE_POWER_1))); + + sensitivityFactors = ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency(crac.getContingencies().iterator().next().getId(), new ArrayList<>()))); + assertEquals(8, sensitivityFactors.size()); + assertTrue(sensitivityFactors.stream().anyMatch(sensitivityFactor -> sensitivityFactor.getFunctionId().contains("FFR2AA1 DDE3AA1 1") + && sensitivityFactor.getVariableId().contains("10YCB-GERMANY--8"))); + } + + @Test + void getFactorsOnCommonCracInAmpere() { + PtdfSensitivityProvider ptdfSensitivityProvider = new PtdfSensitivityProvider(glskMock, crac.getFlowCnecs(), Collections.singleton(Unit.AMPERE)); + List sensitivityFactors = ptdfSensitivityProvider.getBasecaseFactors(network); + assertEquals(8, sensitivityFactors.size()); + assertTrue(sensitivityFactors.stream().anyMatch(sensitivityFactor -> sensitivityFactor.getFunctionId().contains("FFR2AA1 DDE3AA1 1") + && sensitivityFactor.getVariableId().contains("10YCB-GERMANY--8"))); + assertTrue(sensitivityFactors.stream().allMatch(sensitivityFactor -> sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_CURRENT_1))); sensitivityFactors = ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency(crac.getContingencies().iterator().next().getId(), new ArrayList<>()))); assertEquals(8, sensitivityFactors.size()); @@ -80,9 +97,10 @@ void testDisableFactorForBaseCase() { } @Test - void testDoNotHandleAmpere() { - PtdfSensitivityProvider ptdfSensitivityProvider = new PtdfSensitivityProvider(glskMock, crac.getFlowCnecs(), Collections.singleton(Unit.AMPERE)); - assertFalse(ptdfSensitivityProvider.factorsInAmpere); + void testDoHandleAmpere() { + // Simple test to check that we can handle PDTF Sensitivity in both Ampere and MW. + PtdfSensitivityProvider ptdfSensitivityProvider = new PtdfSensitivityProvider(glskMock, crac.getFlowCnecs(), Set.of(Unit.AMPERE, Unit.MEGAWATT)); + assertTrue(ptdfSensitivityProvider.factorsInAmpere); assertTrue(ptdfSensitivityProvider.factorsInMegawatt); } } From e09c40dd6d168ff4b6c59755249fd33532df96d4 Mon Sep 17 00:00:00 2001 From: CHEN Roxane Date: Mon, 10 Nov 2025 12:31:16 +0100 Subject: [PATCH 2/4] check both sides in unit test - more coverage Signed-off-by: CHEN Roxane --- .../PtdfSensitivityProviderTest.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java b/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java index 185829d9d4..2a7c735fa3 100644 --- a/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java +++ b/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java @@ -7,6 +7,7 @@ package com.powsybl.openrao.sensitivityanalysis; +import com.powsybl.iidm.network.TwoSides; import com.powsybl.openrao.commons.Unit; import com.powsybl.openrao.data.crac.api.Crac; import com.powsybl.openrao.data.crac.impl.utils.CommonCracCreation; @@ -38,7 +39,7 @@ class PtdfSensitivityProviderTest { @BeforeEach public void setUp() { network = NetworkImportsUtil.import12NodesNetwork(); - crac = CommonCracCreation.create(); + crac = CommonCracCreation.create(Set.of(TwoSides.ONE, TwoSides.TWO)); glskMock = glsk(); } @@ -55,13 +56,13 @@ private static ZonalData glsk() { void getFactorsOnCommonCracInMegawatt() { PtdfSensitivityProvider ptdfSensitivityProvider = new PtdfSensitivityProvider(glskMock, crac.getFlowCnecs(), Collections.singleton(Unit.MEGAWATT)); List sensitivityFactors = ptdfSensitivityProvider.getBasecaseFactors(network); - assertEquals(8, sensitivityFactors.size()); + assertEquals(16, sensitivityFactors.size()); assertTrue(sensitivityFactors.stream().anyMatch(sensitivityFactor -> sensitivityFactor.getFunctionId().contains("FFR2AA1 DDE3AA1 1") && sensitivityFactor.getVariableId().contains("10YCB-GERMANY--8"))); - assertTrue(sensitivityFactors.stream().allMatch(sensitivityFactor -> sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_ACTIVE_POWER_1))); + assertTrue(sensitivityFactors.stream().allMatch(sensitivityFactor -> sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_ACTIVE_POWER_1) || sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_ACTIVE_POWER_2))); sensitivityFactors = ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency(crac.getContingencies().iterator().next().getId(), new ArrayList<>()))); - assertEquals(8, sensitivityFactors.size()); + assertEquals(12, sensitivityFactors.size()); //12 and not 16 because in contingency FR1 FR2, monitor just side one of network elemeent "FFR2AA1 DDE3AA1 1". assertTrue(sensitivityFactors.stream().anyMatch(sensitivityFactor -> sensitivityFactor.getFunctionId().contains("FFR2AA1 DDE3AA1 1") && sensitivityFactor.getVariableId().contains("10YCB-GERMANY--8"))); } @@ -70,13 +71,13 @@ void getFactorsOnCommonCracInMegawatt() { void getFactorsOnCommonCracInAmpere() { PtdfSensitivityProvider ptdfSensitivityProvider = new PtdfSensitivityProvider(glskMock, crac.getFlowCnecs(), Collections.singleton(Unit.AMPERE)); List sensitivityFactors = ptdfSensitivityProvider.getBasecaseFactors(network); - assertEquals(8, sensitivityFactors.size()); + assertEquals(16, sensitivityFactors.size()); assertTrue(sensitivityFactors.stream().anyMatch(sensitivityFactor -> sensitivityFactor.getFunctionId().contains("FFR2AA1 DDE3AA1 1") && sensitivityFactor.getVariableId().contains("10YCB-GERMANY--8"))); - assertTrue(sensitivityFactors.stream().allMatch(sensitivityFactor -> sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_CURRENT_1))); + assertTrue(sensitivityFactors.stream().allMatch(sensitivityFactor -> sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_CURRENT_1) || sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_CURRENT_2))); sensitivityFactors = ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency(crac.getContingencies().iterator().next().getId(), new ArrayList<>()))); - assertEquals(8, sensitivityFactors.size()); + assertEquals(12, sensitivityFactors.size()); //12 and not 16 because in contingency FR1 FR2, monitor just side one of network elemeent "FFR2AA1 DDE3AA1 1". assertTrue(sensitivityFactors.stream().anyMatch(sensitivityFactor -> sensitivityFactor.getFunctionId().contains("FFR2AA1 DDE3AA1 1") && sensitivityFactor.getVariableId().contains("10YCB-GERMANY--8"))); } @@ -86,14 +87,14 @@ void testDisableFactorForBaseCase() { PtdfSensitivityProvider ptdfSensitivityProvider = new PtdfSensitivityProvider(glskMock, crac.getFlowCnecs(), Collections.singleton(Unit.MEGAWATT)); // factors with basecase and contingency - assertEquals(8, ptdfSensitivityProvider.getBasecaseFactors(network).size()); - assertEquals(8, ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency("Contingency FR1 FR3", new ArrayList<>()))).size()); + assertEquals(16, ptdfSensitivityProvider.getBasecaseFactors(network).size()); + assertEquals(16, ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency("Contingency FR1 FR3", new ArrayList<>()))).size()); ptdfSensitivityProvider.disableFactorsForBaseCaseSituation(); // factors after disabling basecase assertEquals(0, ptdfSensitivityProvider.getBasecaseFactors(network).size()); - assertEquals(8, ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency("Contingency FR1 FR3", new ArrayList<>()))).size()); + assertEquals(16, ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency("Contingency FR1 FR3", new ArrayList<>()))).size()); } @Test From d95b07fc3dfd3adfa440e542c29ba6637de39c02 Mon Sep 17 00:00:00 2001 From: CHEN Roxane Date: Thu, 13 Nov 2025 14:37:29 +0100 Subject: [PATCH 3/4] validate Signed-off-by: CHEN Roxane --- .../PtdfSensitivityProvider.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProvider.java b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProvider.java index 3dae79cbdb..db8daaa7ac 100644 --- a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProvider.java +++ b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProvider.java @@ -76,16 +76,17 @@ private List getFactors(ContingencyContext contingencyContext .forEach((ne, sides) -> { // we allow the computation of both function types (branch_active_power and branch_current) at the same time to match loadFlowProvider behavior getSensitivityFunctionTypes(sides).forEach(functionType -> - mapCountryLinearGlsk.values().stream() - .map(linearGlsk -> new SensitivityFactor( - functionType, - ne.getId(), - SensitivityVariableType.INJECTION_ACTIVE_POWER, - linearGlsk.getId(), - true, - contingencyContext)) - .forEach(factors::add)); - }); + mapCountryLinearGlsk.values().stream() + .map(linearGlsk -> new SensitivityFactor( + functionType, + ne.getId(), + SensitivityVariableType.INJECTION_ACTIVE_POWER, + linearGlsk.getId(), + true, + contingencyContext)) + .forEach(factors::add) + ); + }); return factors; } @@ -94,7 +95,6 @@ public Map getHvdcs() { return new HashMap<>(); } - @Override public List getVariableSets() { return new ArrayList<>(glsk.getDataPerZone().values()); From 3c44c3cd8e36e9b7d65530569d574746ba9a6556 Mon Sep 17 00:00:00 2001 From: CHEN Roxane Date: Wed, 26 Nov 2025 11:32:06 +0100 Subject: [PATCH 4/4] fix after review Signed-off-by: CHEN Roxane --- .../AbstractSimpleSensitivityProvider.java | 2 +- .../sensitivityanalysis/PtdfSensitivityProviderTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/AbstractSimpleSensitivityProvider.java b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/AbstractSimpleSensitivityProvider.java index d79039bdff..a33b5e0c10 100644 --- a/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/AbstractSimpleSensitivityProvider.java +++ b/sensitivity-analysis/src/main/java/com/powsybl/openrao/sensitivityanalysis/AbstractSimpleSensitivityProvider.java @@ -98,7 +98,7 @@ public void enableFactorsForBaseCaseSituation() { this.afterContingencyOnly = false; } - Set getSensitivityFunctionTypes(Set sides) { + protected Set getSensitivityFunctionTypes(Set sides) { Set sensitivityFunctionTypes = new HashSet<>(); if (factorsInMegawatt && sides.contains(TwoSides.ONE)) { sensitivityFunctionTypes.add(SensitivityFunctionType.BRANCH_ACTIVE_POWER_1); diff --git a/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java b/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java index 2a7c735fa3..538a02a4dc 100644 --- a/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java +++ b/sensitivity-analysis/src/test/java/com/powsybl/openrao/sensitivityanalysis/PtdfSensitivityProviderTest.java @@ -62,7 +62,7 @@ void getFactorsOnCommonCracInMegawatt() { assertTrue(sensitivityFactors.stream().allMatch(sensitivityFactor -> sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_ACTIVE_POWER_1) || sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_ACTIVE_POWER_2))); sensitivityFactors = ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency(crac.getContingencies().iterator().next().getId(), new ArrayList<>()))); - assertEquals(12, sensitivityFactors.size()); //12 and not 16 because in contingency FR1 FR2, monitor just side one of network elemeent "FFR2AA1 DDE3AA1 1". + assertEquals(12, sensitivityFactors.size()); // 12 and not 16 because in contingency FR1 FR2, monitor just side one of network elemeent "FFR2AA1 DDE3AA1 1". assertTrue(sensitivityFactors.stream().anyMatch(sensitivityFactor -> sensitivityFactor.getFunctionId().contains("FFR2AA1 DDE3AA1 1") && sensitivityFactor.getVariableId().contains("10YCB-GERMANY--8"))); } @@ -77,7 +77,7 @@ void getFactorsOnCommonCracInAmpere() { assertTrue(sensitivityFactors.stream().allMatch(sensitivityFactor -> sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_CURRENT_1) || sensitivityFactor.getFunctionType().equals(SensitivityFunctionType.BRANCH_CURRENT_2))); sensitivityFactors = ptdfSensitivityProvider.getContingencyFactors(network, List.of(new Contingency(crac.getContingencies().iterator().next().getId(), new ArrayList<>()))); - assertEquals(12, sensitivityFactors.size()); //12 and not 16 because in contingency FR1 FR2, monitor just side one of network elemeent "FFR2AA1 DDE3AA1 1". + assertEquals(12, sensitivityFactors.size()); // 12 and not 16 because in contingency FR1 FR2, monitor just side one of network elemeent "FFR2AA1 DDE3AA1 1". assertTrue(sensitivityFactors.stream().anyMatch(sensitivityFactor -> sensitivityFactor.getFunctionId().contains("FFR2AA1 DDE3AA1 1") && sensitivityFactor.getVariableId().contains("10YCB-GERMANY--8"))); }