Skip to content

Commit 5233349

Browse files
authored
Log missing network element instead of failing (#13)
* Log missing network element instead of failing Signed-off-by: Viktor Terrier <viktor.terrier@rte-france.com>
1 parent 6eb96f9 commit 5233349

2 files changed

Lines changed: 17 additions & 11 deletions

File tree

src/main/java/com/rte_france/trm_algorithm/TrmAlgorithm.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,15 @@ private void checkReferenceElementNotEmpty(List<String> referenceNetworkElementI
4646
}
4747
}
4848

49-
private void checkReferenceElementAreAvailableInMarketBasedNetwork(List<String> referenceNetworkElementIds, Network marketBasedNetwork) {
49+
private List<String> checkReferenceElementAreAvailableInMarketBasedNetwork(List<String> referenceNetworkElementIds, Network marketBasedNetwork) {
5050
List<String> missingBranches = referenceNetworkElementIds.stream()
5151
.filter(branchId -> Objects.isNull(marketBasedNetwork.getBranch(branchId)))
5252
.sorted()
5353
.toList();
5454
if (!missingBranches.isEmpty()) {
55-
throw new TrmException(String.format("Market-based network doesn't contain the following network elements: %s.", missingBranches));
55+
LOGGER.error("Market-based network doesn't contain the following network elements: {}.", missingBranches);
5656
}
57+
return referenceNetworkElementIds.stream().filter(branchId -> !missingBranches.contains(branchId)).collect(Collectors.toList());
5758
}
5859

5960
public TrmResults computeUncertainties(Network referenceNetwork, Network marketBasedNetwork, XnecProvider xnecProvider, ZonalData<SensitivityVariableSet> referenceZonalGlsks) {
@@ -62,7 +63,7 @@ public TrmResults computeUncertainties(Network referenceNetwork, Network marketB
6263
LOGGER.info("Selecting Critical network elements");
6364
List<String> referenceNetworkElementIds = xnecProvider.getNetworkElements(referenceNetwork).stream().map(Identifiable::getId).sorted().toList();
6465
checkReferenceElementNotEmpty(referenceNetworkElementIds);
65-
checkReferenceElementAreAvailableInMarketBasedNetwork(referenceNetworkElementIds, marketBasedNetwork);
66+
referenceNetworkElementIds = checkReferenceElementAreAvailableInMarketBasedNetwork(referenceNetworkElementIds, marketBasedNetwork);
6667

6768
operationalConditionAligner.align(referenceNetwork, marketBasedNetwork);
6869
Map<String, Double> marketBasedFlows = flowExtractor.extract(marketBasedNetwork, referenceNetworkElementIds);

src/test/java/com/rte_france/trm_algorithm/TrmAlgorithmTest.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import com.powsybl.flow_decomposition.xnec_provider.XnecProviderInterconnection;
1717
import com.powsybl.flow_decomposition.xnec_provider.XnecProviderUnion;
1818
import com.powsybl.glsk.commons.ZonalData;
19-
import com.powsybl.glsk.commons.ZonalDataImpl;
2019
import com.powsybl.glsk.cse.CseGlskDocument;
2120
import com.powsybl.iidm.modification.scalable.Scalable;
2221
import com.powsybl.iidm.network.Network;
@@ -35,8 +34,7 @@
3534
import java.time.ZoneOffset;
3635
import java.util.*;
3736

38-
import static org.junit.jupiter.api.Assertions.assertEquals;
39-
import static org.junit.jupiter.api.Assertions.assertThrows;
37+
import static org.junit.jupiter.api.Assertions.*;
4038

4139
/**
4240
* @author Hugo Schindler {@literal <hugo.schindler at rte-france.com>}
@@ -242,11 +240,18 @@ void testSameNetwork16NodesWithDisconnectedLine() {
242240
@Test
243241
void testDifferentNetwork() {
244242
Network referenceNetwork = TestUtils.importNetwork("TestCase16Nodes/TestCase16Nodes.uct");
245-
Network marketBasedNetwork = TestUtils.importNetwork("operational_conditions_aligners/pst/NETWORK_PST_FLOW_WITH_COUNTRIES_NON_NEUTRAL.uct");
246-
XnecProvider xnecProvider = new XnecProviderInterconnection();
247-
TrmAlgorithm trmAlgorithm = setUp(CracFactory.findDefault().create("crac"), new ZonalDataImpl<>(Collections.emptyMap()));
248-
TrmException exception = assertThrows(TrmException.class, () -> trmAlgorithm.computeUncertainties(referenceNetwork, marketBasedNetwork, xnecProvider, null));
249-
assertEquals("Market-based network doesn't contain the following network elements: [BBE1AA1 FFR5AA1 1, BBE2AA1 FFR3AA1 1, BBE4AA1 FFR5AA1 1, DDE2AA1 NNL3AA1 1, FFR2AA1 DDE3AA1 1, FFR4AA1 DDE1AA1 1, FFR4AA1 DDE4AA1 1, NNL2AA1 BBE3AA1 1].", exception.getMessage());
243+
Network marketBasedNetwork = TestUtils.importNetwork("TestCase16Nodes/TestCase16Nodes.uct");
244+
CseGlskDocument cseGlskDocument = CseGlskDocument.importGlsk(getClass().getResourceAsStream("TestCase16Nodes/glsk_proportional_16nodes.xml"), false, true);
245+
marketBasedNetwork.getLine("BBE1AA1 FFR5AA1 1").remove();
246+
ZonalData<SensitivityVariableSet> zonalGlsks = cseGlskDocument.getZonalGlsks(referenceNetwork);
247+
ZonalData<Scalable> localMarketZonalScalable = cseGlskDocument.getZonalScalable(marketBasedNetwork);
248+
XnecProviderByIds xnecProviderByIds = XnecProviderByIds.builder()
249+
.addNetworkElementsOnBasecase(Set.of("BBE1AA1 FFR5AA1 1"))
250+
.build();
251+
XnecProvider xnecProvider = new XnecProviderUnion(List.of(xnecProviderByIds, new XnecProviderInterconnection()));
252+
TrmAlgorithm trmAlgorithm = setUp(CracFactory.findDefault().create("crac"), localMarketZonalScalable);
253+
TrmResults trmResults = trmAlgorithm.computeUncertainties(referenceNetwork, marketBasedNetwork, xnecProvider, zonalGlsks);
254+
assertNull(trmResults.getUncertaintiesMap().get("BBE1AA1 FFR5AA1 1"));
250255
}
251256

252257
@Test

0 commit comments

Comments
 (0)