Skip to content

Commit 90eaf8e

Browse files
committed
Force a buses recalculation when the view change (#163)
Signed-off-by: Slimane AMAR <[email protected]>
1 parent 8283cab commit 90eaf8e

File tree

10 files changed

+14
-21
lines changed

10 files changed

+14
-21
lines changed

network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/AbstractTopology.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ Map<T, Integer> getNodeOrBusToCalculatedBusNum() {
344344
private CalculationResult<T> getCalculatedBusAttributesList(NetworkObjectIndex index, Resource<VoltageLevelAttributes> voltageLevelResource, boolean includeOpenSwitches, boolean isBusView) {
345345
List<CalculatedBusAttributes> calculatedBusAttributesList;
346346
Map<T, Integer> nodeOrBusToCalculatedBusNum;
347-
if (voltageLevelResource.getAttributes().isCalculatedBusesValid()) {
347+
if (voltageLevelResource.getAttributes().isCalculatedBusesValid() && (voltageLevelResource.getAttributes().isCalculatedBusesForBusView() == isBusView)) {
348348
calculatedBusAttributesList = voltageLevelResource.getAttributes().getCalculatedBuses();
349349
nodeOrBusToCalculatedBusNum = getNodeOrBusToCalculatedBusNum(voltageLevelResource);
350350
} else {
@@ -366,6 +366,7 @@ private CalculationResult<T> getCalculatedBusAttributesList(NetworkObjectIndex i
366366
setNodeOrBusToCalculatedBusNum(voltageLevelResource, nodeOrBusToCalculatedBusNum);
367367

368368
voltageLevelResource.getAttributes().setCalculatedBusesValid(true);
369+
voltageLevelResource.getAttributes().setCalculatedBusesForBusView(isBusView);
369370
}
370371

371372
return new CalculationResult<>(calculatedBusAttributesList, nodeOrBusToCalculatedBusNum);

network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/BusBreakerViewImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ private <T> AbstractTopology<T> getTopologyInstance() {
5252
}
5353

5454
private Map<String, Bus> calculateBuses() {
55-
voltageLevelResource.getAttributes().setCalculatedBusesValid(false);
5655
return getTopologyInstance().calculateBuses(index, voltageLevelResource);
5756
}
5857

network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/TerminalBusBreakerViewImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,10 @@ private void checkNodeBreakerTopology() {
5252
}
5353

5454
private List<Bus> calculateBuses(boolean includeOpenSwitches) {
55-
getVoltageLevelResource().getAttributes().setCalculatedBusesValid(false);
5655
return NodeBreakerTopology.INSTANCE.calculateBuses(index, getVoltageLevelResource(), includeOpenSwitches, false).values().stream().collect(Collectors.toList());
5756
}
5857

5958
private Bus calculateBus() {
60-
getVoltageLevelResource().getAttributes().setCalculatedBusesValid(false);
6159
return NodeBreakerTopology.INSTANCE.calculateBus(index, getVoltageLevelResource(), attributes.getNode());
6260
}
6361

@@ -82,6 +80,7 @@ public Bus getConnectableBus() {
8280
return bus;
8381
}
8482

83+
getVoltageLevelResource().getAttributes().setCalculatedBusesValid(false); // Force a calculation
8584
List<Bus> buses = calculateBuses(true);
8685
Integer calculatedBusNum = getVoltageLevelResource().getAttributes().getNodeToCalculatedBus().get(attributes.getNode());
8786
if (calculatedBusNum != null) {
@@ -110,6 +109,6 @@ public void setConnectableBus(String busId) {
110109

111110
attributes.setConnectableBus(busId);
112111

113-
getVoltageLevelResource().getAttributes().setCalculatedBusesValid(false);
112+
index.getVoltageLevel(getVoltageLevelResource().getId()).orElseThrow(AssertionError::new).invalidateCalculatedBuses();
114113
}
115114
}

network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/TerminalBusViewImpl.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,12 @@ private Resource<VoltageLevelAttributes> getVoltageLevelResource() {
4949
}
5050

5151
private Bus calculateBus(boolean includeOpenSwitches) {
52-
getVoltageLevelResource().getAttributes().setCalculatedBusesValid(false);
5352
return isNodeBeakerTopologyKind() ?
5453
getTopologyInstance().calculateBus(index, getVoltageLevelResource(), attributes.getNode(), includeOpenSwitches, true) :
5554
getTopologyInstance().calculateBus(index, getVoltageLevelResource(), attributes.getBus(), includeOpenSwitches, true);
5655
}
5756

5857
private List<Bus> calculateBuses(boolean includeOpenSwitches) {
59-
getVoltageLevelResource().getAttributes().setCalculatedBusesValid(false);
6058
return getTopologyInstance().calculateBuses(index, getVoltageLevelResource(), includeOpenSwitches, true).values().stream().collect(Collectors.toList());
6159
}
6260

@@ -76,6 +74,7 @@ public Bus getConnectableBus() {
7674
}
7775

7876
VoltageLevelAttributes voltageLevelAttributes = getVoltageLevelResource().getAttributes();
77+
getVoltageLevelResource().getAttributes().setCalculatedBusesValid(false); // Force a calculation
7978
List<Bus> buses = calculateBuses(true);
8079

8180
Integer calculatedBusNum = isNodeBeakerTopologyKind() ?

network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/VoltageLevelBusViewImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ private <T> AbstractTopology<T> getTopologyInstance() {
4545
}
4646

4747
private Map<String, Bus> calculateBuses() {
48-
voltageLevelResource.getAttributes().setCalculatedBusesValid(false);
4948
return getTopologyInstance().calculateBuses(index, voltageLevelResource, false, true);
5049
}
5150

network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/VoltageLevelImpl.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,6 @@ void invalidateCalculatedBuses() {
5454
getNetwork().invalidateComponents();
5555
}
5656

57-
boolean isCalculatedBusesValid() {
58-
return resource.getAttributes().isCalculatedBusesValid();
59-
}
60-
6157
@Override
6258
public ContainerType getContainerType() {
6359
return ContainerType.VOLTAGE_LEVEL;

network-store-iidm-impl/src/test/java/com/powsybl/network/store/iidm/impl/CalculatedBusTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public void testCalculatedBusesNodeBreakerSwitchRetain() {
130130
assertEquals(0, vl1.getBusBreakerView().getSwitchCount());
131131

132132
s.setRetained(false);
133-
assertTrue(((VoltageLevelImpl) vl1).isCalculatedBusesValid());
133+
assertTrue(((VoltageLevelImpl) vl1).getResource().getAttributes().isCalculatedBusesValid());
134134
}
135135

136136
@Test

network-store-iidm-impl/src/test/java/com/powsybl/network/store/iidm/impl/NodeBreakerTerminalTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,12 @@ public void testBusBreakerView() {
125125
assertTrue(bbs1t.isConnected()); // because busbar section is not deconnectable
126126

127127
assertTrue(gt.disconnect());
128-
assertFalse(gt.isConnected());
129128
assertEquals(2, vl1.getBusBreakerView().getBusStream().count());
130129
assertNotNull(gt.getBusBreakerView().getConnectableBus());
131130
assertEquals(vl1.getBusBreakerView().getBus("VL1_0"), gt.getBusBreakerView().getConnectableBus());
132131
assertTrue(gt.connect());
133-
assertTrue(gt.isConnected());
134132

135133
assertTrue(ldt1.disconnect());
136-
assertFalse(ldt1.isConnected());
137134
assertEquals(2, vl1.getBusBreakerView().getBusStream().count());
138135
assertNotNull(ldt1.getBusBreakerView().getConnectableBus());
139136
assertEquals(vl1.getBusBreakerView().getBus("VL1_1"), ldt1.getBusBreakerView().getConnectableBus());

network-store-integration-test/src/test/java/com/powsybl/network/store/integration/NetworkStoreIT.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2076,14 +2076,14 @@ public void testComponentCalculationNetwork() {
20762076
Network network = service.getNetwork(networkIds.keySet().stream().findFirst().orElseThrow(AssertionError::new));
20772077
assertEquals(ComponentConstants.MAIN_NUM, network.getGenerator("g").getTerminal().getBusView().getBus().getConnectedComponent().getNum());
20782078
assertEquals(ComponentConstants.MAIN_NUM, network.getGenerator("g").getTerminal().getBusView().getBus().getSynchronousComponent().getNum());
2079-
//assertEquals(ComponentConstants.MAIN_NUM, network.getLoad("ld").getTerminal().getBusView().getBus().getConnectedComponent().getNum());
2080-
//assertEquals(ComponentConstants.MAIN_NUM, network.getLoad("ld").getTerminal().getBusView().getBus().getSynchronousComponent().getNum());
2079+
assertEquals(ComponentConstants.MAIN_NUM, network.getLoad("ld").getTerminal().getBusView().getBus().getConnectedComponent().getNum());
2080+
assertEquals(ComponentConstants.MAIN_NUM, network.getLoad("ld").getTerminal().getBusView().getBus().getSynchronousComponent().getNum());
20812081

20822082
network.getSwitch("s").setOpen(true);
20832083
assertEquals(ComponentConstants.MAIN_NUM, network.getGenerator("g").getTerminal().getBusView().getBus().getConnectedComponent().getNum());
20842084
assertEquals(ComponentConstants.MAIN_NUM, network.getGenerator("g").getTerminal().getBusView().getBus().getSynchronousComponent().getNum());
2085-
//assertEquals(1, network.getLoad("ld").getTerminal().getBusView().getBus().getConnectedComponent().getNum());
2086-
//assertEquals(1, network.getLoad("ld").getTerminal().getBusView().getBus().getSynchronousComponent().getNum());
2085+
assertEquals(1, network.getLoad("ld").getTerminal().getBusView().getBus().getConnectedComponent().getNum());
2086+
assertEquals(1, network.getLoad("ld").getTerminal().getBusView().getBus().getSynchronousComponent().getNum());
20872087
}
20882088
}
20892089

network-store-model/src/main/java/com/powsybl/network/store/model/VoltageLevelAttributes.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,12 @@ public class VoltageLevelAttributes extends AbstractAttributes implements Identi
6666
private TerminalRefAttributes slackTerminal;
6767

6868
@Builder.Default
69-
@ApiModelProperty("Calculated bus validity")
69+
@ApiModelProperty("Calculated buses validity")
7070
private boolean calculatedBusesValid = false;
7171

72+
@ApiModelProperty("Calculated buses for bus view")
73+
private boolean calculatedBusesForBusView;
74+
7275
public VoltageLevelAttributes(VoltageLevelAttributes other) {
7376
super(other);
7477
this.substationId = other.substationId;

0 commit comments

Comments
 (0)