From 35f4a8f48013358eb50df7d5edbab263b2cefd08 Mon Sep 17 00:00:00 2001 From: Florian Dupuy <66690739+flo-dup@users.noreply.github.com> Date: Thu, 15 Sep 2022 13:59:00 +0200 Subject: [PATCH] Sort voltage levels input (#89) * Factorize duplicate stream * Sort filtered voltage levels * Update unit tests Signed-off-by: Florian Dupuy --- .../nad/build/iidm/NetworkGraphBuilder.java | 30 +- src/test/resources/3wt.svg | 36 +- src/test/resources/3wt_disconnected.svg | 54 +- src/test/resources/IEEE_118_bus.svg | 6804 ++++++++--------- .../IEEE_118_bus_partial_non_connected.svg | 870 +-- src/test/resources/IEEE_14_bus.svg | 828 +- .../resources/IEEE_14_bus_disconnection.svg | 878 +-- src/test/resources/IEEE_14_bus_fictitious.svg | 788 +- src/test/resources/IEEE_14_bus_text_nodes.svg | 780 +- src/test/resources/IEEE_14_id_prefixed.svg | 780 +- src/test/resources/IEEE_24_bus.svg | 1408 ++-- src/test/resources/IEEE_30_bus.svg | 1606 ++-- src/test/resources/IEEE_57_bus.svg | 3214 ++++---- .../resources/edge_info_double_labels.svg | 30 +- 14 files changed, 9050 insertions(+), 9056 deletions(-) diff --git a/src/main/java/com/powsybl/nad/build/iidm/NetworkGraphBuilder.java b/src/main/java/com/powsybl/nad/build/iidm/NetworkGraphBuilder.java index 211c9544..b2e33275 100644 --- a/src/main/java/com/powsybl/nad/build/iidm/NetworkGraphBuilder.java +++ b/src/main/java/com/powsybl/nad/build/iidm/NetworkGraphBuilder.java @@ -8,14 +8,16 @@ import com.powsybl.commons.PowsyblException; import com.powsybl.iidm.network.Identifiable; -import com.powsybl.nad.model.ThreeWtNode; import com.powsybl.iidm.network.*; import com.powsybl.nad.build.GraphBuilder; import com.powsybl.nad.model.*; import com.powsybl.nad.utils.iidm.IidmUtils; +import java.util.Comparator; +import java.util.List; import java.util.Objects; import java.util.function.Predicate; +import java.util.stream.Collectors; /** * @author Florian Dupuy @@ -43,24 +45,16 @@ public NetworkGraphBuilder(Network network) { @Override public Graph buildGraph() { Graph graph = new Graph(); - addGraphNodes(graph); - addGraphEdges(graph); - return graph; - } - - private void addGraphNodes(Graph graph) { - network.getVoltageLevelStream() + List voltageLevels = network.getVoltageLevelStream() .filter(voltageLevelFilter) - .forEach(vl -> createVoltageLevelNode(vl, graph, true)); - } - - private void addGraphEdges(Graph graph) { - network.getVoltageLevelStream() - .filter(voltageLevelFilter) - .forEach(vl -> visitEquipments(vl, graph)); + .sorted(Comparator.comparing(VoltageLevel::getId)) + .collect(Collectors.toList()); + voltageLevels.forEach(vl -> addVoltageLevelGraphNode(vl, graph, true)); + voltageLevels.forEach(vl -> addGraphEdges(vl, graph)); + return graph; } - private VoltageLevelNode createVoltageLevelNode(VoltageLevel vl, Graph graph, boolean visible) { + private VoltageLevelNode addVoltageLevelGraphNode(VoltageLevel vl, Graph graph, boolean visible) { VoltageLevelNode vlNode = new VoltageLevelNode(idProvider.createId(vl), vl.getId(), vl.getNameOrId(), vl.isFictitious(), visible); vl.getBusView().getBusStream() .map(bus -> new BusNode(idProvider.createId(bus), bus.getId())) @@ -72,7 +66,7 @@ private VoltageLevelNode createVoltageLevelNode(VoltageLevel vl, Graph graph, bo return vlNode; } - private void visitEquipments(VoltageLevel vl, Graph graph) { + private void addGraphEdges(VoltageLevel vl, Graph graph) { vl.getLineStream().forEach(l -> visitLine(vl, l, graph)); vl.getTwoWindingsTransformerStream().forEach(twt -> visitTwoWindingsTransformer(vl, twt, graph)); vl.getThreeWindingsTransformerStream().forEach(thwt -> visitThreeWindingsTransformer(vl, thwt, graph)); @@ -174,7 +168,7 @@ private BusNode getBusNode(Graph graph, Terminal terminal) { private VoltageLevelNode getOrCreateInvisibleVoltageLevelNode(Graph graph, Terminal terminal) { VoltageLevel vl = terminal.getVoltageLevel(); - return graph.getVoltageLevelNode(vl.getId()).orElseGet(() -> createVoltageLevelNode(vl, graph, false)); + return graph.getVoltageLevelNode(vl.getId()).orElseGet(() -> addVoltageLevelGraphNode(vl, graph, false)); } private ThreeWindingsTransformer.Side[] getSidesArray(ThreeWindingsTransformer.Side sideA) { diff --git a/src/test/resources/3wt.svg b/src/test/resources/3wt.svg index d7390d0f..16a5d7d9 100644 --- a/src/test/resources/3wt.svg +++ b/src/test/resources/3wt.svg @@ -47,14 +47,14 @@ ]]> - - - + + + - - - + + + @@ -68,22 +68,22 @@ - - VL_132 + + VL_11 - - VL_33 + + VL_132 - - VL_11 + + VL_33 - + 3WT @@ -103,7 +103,7 @@ - + 3WT @@ -123,7 +123,7 @@ - + 3WT @@ -146,9 +146,9 @@ - - - + + + diff --git a/src/test/resources/3wt_disconnected.svg b/src/test/resources/3wt_disconnected.svg index 94bf6685..6259d9f2 100644 --- a/src/test/resources/3wt_disconnected.svg +++ b/src/test/resources/3wt_disconnected.svg @@ -47,13 +47,13 @@ ]]> - - + + - - - + + + @@ -67,22 +67,22 @@ - - VL_132 + + VL_11 - + + VL_132 + + + VL_33 - - VL_11 - - - + 3WT @@ -102,30 +102,30 @@ - + 3WT - - + + - + - 0 + 0 - + - 0 + 0 - + 3WT - - + + @@ -145,15 +145,15 @@ - - - + + + - + SUBSTATION diff --git a/src/test/resources/IEEE_118_bus.svg b/src/test/resources/IEEE_118_bus.svg index 308a3b64..2da3da0e 100644 --- a/src/test/resources/IEEE_118_bus.svg +++ b/src/test/resources/IEEE_118_bus.svg @@ -1,5 +1,5 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -207,871 +207,871 @@ - - VL23 + + VL113 - - VL27 + + VL114 - + + VL23 + + + + VL27 + + + VL30 - + - + VL31 - + - + VL32 - + - + VL37 - + - + VL38 - + - + VL65 - - - - VL113 - - - - VL114 - + - L22-23-1 + L17-113-1 - - + + - + - 0 + 0 - + - 0 + 0 - - L23-24-1 + + L32-113-1 - - + + - + - 0 + 0 - + - 0 + 0 - - - L23-25-1 - - + + - + - 0 + 0 - + - 0 + 0 - - L23-32-1 + + L32-114-1 - - + + - + - 0 + 0 - + - 0 + 0 - - + + - + - 0 + 0 - + - 0 + 0 - - L25-27-1 + + L114-115-1 - - + + - + - 0 + 0 - + - 0 + 0 - - L27-28-1 + + L22-23-1 - - + + - + - 0 + 0 - + - 0 + 0 - - L27-32-1 + + L23-24-1 - - + + - + - 0 + 0 - + - 0 + 0 + + + L23-25-1 - - + + - + - 0 + 0 - + - 0 + 0 - L27-115-1 + L23-32-1 - - + + - + - 0 + 0 - + - 0 + 0 - - - L8-30-1 - - - + + + - + - 0 + 0 - + - 0 + 0 - - L26-30-1 - - - + + L25-27-1 + + + - + - 0 + 0 - + - 0 + 0 - - L30-38-1 - - - + + L27-28-1 + + + - + - 0 + 0 - + - 0 + 0 - - - + + + L27-32-1 + + + - + - 0 + 0 - + - 0 + 0 - - - T30-17-1 - - - + + + - + - 0 + 0 - + - 0 + 0 - - - - - - L17-31-1 + + L27-115-1 - - + + - + - 0 + 0 - + - 0 + 0 - - L29-31-1 - - - + + L8-30-1 + + + - + - 0 + 0 - + - 0 + 0 - - L31-32-1 - - - + + L26-30-1 + + + - + - 0 + 0 - + - 0 + 0 - - - + + + L30-38-1 + + + - + - 0 + 0 - + - 0 + 0 - - - L32-113-1 - - - + + + - + - 0 + 0 - + - 0 + 0 - - - + + + T30-17-1 + + + - + - 0 + 0 - + - 0 + 0 + + + + - - L32-114-1 + + L17-31-1 - - + + - + - 0 + 0 - + - 0 + 0 + + + L29-31-1 - - + + - + - 0 + 0 - + - 0 + 0 - - L35-37-1 + + L31-32-1 - - + + - + - 0 + 0 - + - 0 + 0 - - - L33-37-1 - - + + - + - 0 + 0 - + - 0 + 0 - - L34-37-1 + + L35-37-1 - - + + - + - 0 + 0 - + - 0 + 0 - - L37-39-1 + + L33-37-1 - - + + - + - 0 + 0 - + - 0 + 0 - - L37-40-1 + + L34-37-1 - - + + - + - 0 + 0 - + - 0 + 0 - - T38-37-1 - - - + + L37-39-1 + + + - + - 0 + 0 - + - 0 + 0 - + + + L37-40-1 - - + + - + - 0 + 0 - + - 0 + 0 - - - L38-65-1 + + T38-37-1 - - + + - + - 0 + 0 - + - 0 + 0 + - - - + + + - + - 0 + 0 - + - 0 + 0 + - - L64-65-1 + + L38-65-1 - - + + - + - 0 + 0 - + - 0 + 0 - - - L65-68-1 - - + + - + - 0 + 0 - + - 0 + 0 - - T65-66-1 + + L64-65-1 - - + + - + - 0 + 0 - + - 0 + 0 - - - - - - L17-113-1 - - - + + L65-68-1 + + + - + - 0 + 0 - + - 0 + 0 - L114-115-1 - - - + T65-66-1 + + + - + - 0 + 0 - + - 0 + 0 + + + + - - - - - - - - - - + + + + + + + + + + - S46 - S36 - S55 - S90 - S91 - S88 - S88 - S99 - S30 - S28 + S30 + S28 + S46 + S36 + S55 + S90 + S91 + S88 + S88 + S99 diff --git a/src/test/resources/IEEE_14_bus.svg b/src/test/resources/IEEE_14_bus.svg index 65f3c7cb..1d681dc0 100644 --- a/src/test/resources/IEEE_14_bus.svg +++ b/src/test/resources/IEEE_14_bus.svg @@ -1,5 +1,5 @@ - + - - - + + + - - - + + + @@ -68,19 +68,19 @@ - + - + - + - + @@ -93,7 +93,7 @@ - + @@ -106,7 +106,7 @@ - + @@ -122,9 +122,9 @@ - - - + + +