diff --git a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/NodeBreakerVoltageLevel.java b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/NodeBreakerVoltageLevel.java index 9de68df1721..73901a057d4 100644 --- a/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/NodeBreakerVoltageLevel.java +++ b/iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/NodeBreakerVoltageLevel.java @@ -23,7 +23,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -400,11 +399,11 @@ BusExt getConnectableBus(int node) { }); // if nothing found, just take the first bus if (connectableBus2[0] == null) { - Iterator it = getBuses().iterator(); - if (!it.hasNext()) { - throw new AssertionError("Should not happen"); + Collection buses = getBuses(); + if (buses.isEmpty()) { // if the whole voltage level is disconnected, return null + return null; } - return it.next(); + return buses.iterator().next(); } return connectableBus2[0]; } diff --git a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/NodeBreakerTest.java b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/NodeBreakerTest.java index 9af742a0892..56cc485fb63 100644 --- a/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/NodeBreakerTest.java +++ b/iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/NodeBreakerTest.java @@ -75,6 +75,9 @@ private static Network createIsolatedLoadNetwork() { VoltageLevel vl1 = s1.newVoltageLevel().setId("VL").setNominalV(1f) .setTopologyKind(TopologyKind.NODE_BREAKER) .add(); + VoltageLevel vl2 = s1.newVoltageLevel().setId("VL2").setNominalV(1f) + .setTopologyKind(TopologyKind.NODE_BREAKER) + .add(); vl1.getNodeBreakerView() .setNodeCount(11) @@ -150,6 +153,15 @@ private static Network createIsolatedLoadNetwork() { .setNode2(2) .setRetained(true) .add(); + + vl2.getNodeBreakerView() + .setNodeCount(1); + vl2.newLoad() + .setId("L4") + .setNode(0) + .setP0(0) + .setQ0(0) + .add(); return network; } @@ -283,5 +295,9 @@ public void testIsolatedLoadBusBranch() { // load "L3" is not connected and has no connectable bus (the first bus is taken as connectable bus in this case) assertNull(getBus(network.getLoad("L3"))); assertEquals("VL_0", getConnectableBus(network.getLoad("L3")).getId()); + + // load "L4" is not connected, has no connectable bus and is in a disconnected voltage level + assertNull(getBus(network.getLoad("L4"))); + assertNull(getConnectableBus(network.getLoad("L4"))); } }