Skip to content

Commit

Permalink
[Network modifications] Fix: Remove disconnectors and breakers in Rem…
Browse files Browse the repository at this point in the history
…oveHvdcLine and RemoveVoltageLevel (#2522)

Signed-off-by: Coline PILOQUET <coline.piloquet@rte-france.com>
  • Loading branch information
colinepiloquet authored and miovd committed Mar 30, 2023
1 parent 95367ad commit 5c11d46
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ public void apply(Network network, boolean throwException, ComputationManager co
hvdcLine.remove();
removedHvdcLineReport(reporter, hvdcLineId);
// Remove the Shunt compensators that represent the filters of the LCC
removeShuntCompensators(hvdcConverterStation1, hvdcConverterStation2, shunts, reporter);
removeConverterStations(hvdcConverterStation1, hvdcConverterStation2, reporter);
removeShuntCompensators(network, hvdcConverterStation1, hvdcConverterStation2, shunts, throwException, computationManager, reporter);
removeConverterStations(network, hvdcConverterStation1, hvdcConverterStation2, throwException, computationManager, reporter);
} else {
LOGGER.error("Hvdc Line {} not found", hvdcLineId);
notFoundHvdcLineReport(reporter, hvdcLineId);
Expand All @@ -80,7 +80,7 @@ private static ShuntCompensator getShuntCompensator(String id, Network network,
return sc;
}

private static void removeShuntCompensators(HvdcConverterStation<?> hvdcConverterStation1, HvdcConverterStation<?> hvdcConverterStation2, Set<ShuntCompensator> shunts, Reporter reporter) {
private static void removeShuntCompensators(Network network, HvdcConverterStation<?> hvdcConverterStation1, HvdcConverterStation<?> hvdcConverterStation2, Set<ShuntCompensator> shunts, boolean throwException, ComputationManager computationManager, Reporter reporter) {
if (shunts == null) {
return;
}
Expand All @@ -94,7 +94,7 @@ private static void removeShuntCompensators(HvdcConverterStation<?> hvdcConverte
VoltageLevel shuntVl = shuntCompensator.getTerminal().getVoltageLevel();
// check whether the shunt compensator is connected to the same voltage level as the lcc
if (vl1 == shuntVl || vl2 == shuntVl) {
shuntCompensator.remove();
new RemoveFeederBay(shuntCompensator.getId()).apply(network, throwException, computationManager, reporter);
removedShuntCompensatorReport(reporter, shuntCompensator.getId());
} else {
LOGGER.warn("Shunt compensator {} has been ignored because it is not in the same voltage levels as the Lcc ({} or {})", shuntCompensator.getId(), vl1.getId(), vl2.getId());
Expand All @@ -103,9 +103,9 @@ private static void removeShuntCompensators(HvdcConverterStation<?> hvdcConverte
}
}

private static void removeConverterStations(HvdcConverterStation<?> hvdcConverterStation1, HvdcConverterStation<?> hvdcConverterStation2, Reporter reporter) {
hvdcConverterStation1.remove();
hvdcConverterStation2.remove();
private static void removeConverterStations(Network network, HvdcConverterStation<?> hvdcConverterStation1, HvdcConverterStation<?> hvdcConverterStation2, boolean throwException, ComputationManager computationManager, Reporter reporter) {
new RemoveFeederBay(hvdcConverterStation1.getId()).apply(network, throwException, computationManager, reporter);
new RemoveFeederBay(hvdcConverterStation2.getId()).apply(network, throwException, computationManager, reporter);
reportConverterStationRemoved(reporter, hvdcConverterStation1);
reportConverterStationRemoved(reporter, hvdcConverterStation2);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,17 @@ public void apply(Network network, boolean throwException, ComputationManager co

voltageLevel.getConnectables(HvdcConverterStation.class).forEach(hcs -> {
if (hcs.getHvdcLine() != null) {
hcs.getHvdcLine().remove();
new RemoveHvdcLineBuilder().withHvdcLineId(hcs.getHvdcLine().getId()).build().apply(network, throwException, computationManager, reporter);
}
hcs.remove();
});

voltageLevel.getConnectables().forEach(Connectable::remove);
voltageLevel.getConnectables().forEach(connectable -> {
if (connectable instanceof Injection) {
connectable.remove();
} else {
new RemoveFeederBayBuilder().withConnectableId(connectable.getId()).build().apply(network, throwException, computationManager, reporter);
}
});

voltageLevel.remove();
removedVoltageLevelReport(reporter, voltageLevelId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ void testRemoveVoltageLevel() {
addListener(network);

new RemoveVoltageLevelBuilder().withVoltageLevelId("S1VL1").build().apply(network);
assertEquals(Set.of("TWT", "S1VL1_BBS", "S1VL1_BBS_TWT_DISCONNECTOR", "S1VL1", "S1VL1_LD1_BREAKER", "LD1", "S1VL1_TWT_BREAKER", "S1VL1_BBS_LD1_DISCONNECTOR"), beforeRemovalObjects);
assertEquals(Set.of("TWT", "S1VL1_BBS", "S1VL1_BBS_TWT_DISCONNECTOR", "S1VL1", "S1VL1_LD1_BREAKER", "LD1", "S1VL1_TWT_BREAKER", "S1VL1_BBS_LD1_DISCONNECTOR"), removedObjects);
assertEquals(Set.of("TWT", "S1VL1_BBS", "S1VL1_BBS_TWT_DISCONNECTOR", "S1VL1", "S1VL1_LD1_BREAKER", "LD1", "S1VL1_TWT_BREAKER", "S1VL1_BBS_LD1_DISCONNECTOR", "S1VL2_BBS1_TWT_DISCONNECTOR", "S1VL2_BBS2_TWT_DISCONNECTOR", "S1VL2_TWT_BREAKER"), beforeRemovalObjects);
assertEquals(Set.of("TWT", "S1VL1_BBS", "S1VL1_BBS_TWT_DISCONNECTOR", "S1VL1", "S1VL1_LD1_BREAKER", "LD1", "S1VL1_TWT_BREAKER", "S1VL1_BBS_LD1_DISCONNECTOR", "S1VL2_BBS1_TWT_DISCONNECTOR", "S1VL2_BBS2_TWT_DISCONNECTOR", "S1VL2_TWT_BREAKER"), removedObjects);
assertNull(network.getVoltageLevel("S1VL1"));
assertNull(network.getTwoWindingsTransformer("TWT"));

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<iidm:network xmlns:iidm="http://www.powsybl.org/schema/iidm/1_9" id="fictitious" caseDate="2021-08-27T14:44:56.567+02:00" forecastDistance="0" sourceFormat="test" minimumValidationLevel="STEADY_STATE_HYPOTHESIS">
<iidm:voltageLevel id="VLTEST" nominalV="380.0" topologyKind="NODE_BREAKER">
<iidm:nodeBreakerTopology/>
<iidm:nodeBreakerTopology></iidm:nodeBreakerTopology>
</iidm:voltageLevel>
<iidm:substation id="A" country="FR">
<iidm:voltageLevel id="N" nominalV="225.0" lowVoltageLimit="220.0" highVoltageLimit="245.00002" topologyKind="NODE_BREAKER">
Expand All @@ -13,7 +14,6 @@
<iidm:switch id="X" name="Y" kind="DISCONNECTOR" retained="false" open="true" node1="0" node2="11"/>
<iidm:switch id="Z" name="AA" kind="DISCONNECTOR" retained="false" open="true" node1="0" node2="13"/>
<iidm:switch id="AB" name="AC" kind="DISCONNECTOR" retained="false" open="false" node1="0" node2="15"/>
<iidm:switch id="AD" name="AE" kind="DISCONNECTOR" retained="false" open="true" node1="0" node2="8"/>
<iidm:switch id="AF" name="AG" fictitious="true" kind="DISCONNECTOR" retained="false" open="true" node1="0" node2="2"/>
<iidm:switch id="AH" name="AI" kind="DISCONNECTOR" retained="false" open="false" node1="7" node2="0"/>
<iidm:switch id="AJ" name="AK" kind="DISCONNECTOR" retained="false" open="false" node1="1" node2="6"/>
Expand All @@ -23,22 +23,17 @@
<iidm:switch id="AR" name="AS" kind="DISCONNECTOR" retained="false" open="true" node1="1" node2="11"/>
<iidm:switch id="AT" name="AU" kind="DISCONNECTOR" retained="false" open="true" node1="1" node2="13"/>
<iidm:switch id="AV" name="AW" kind="DISCONNECTOR" retained="false" open="true" node1="1" node2="15"/>
<iidm:switch id="AX" name="AY" kind="DISCONNECTOR" retained="false" open="false" node1="1" node2="8"/>
<iidm:switch id="AZ" name="BA" fictitious="true" kind="DISCONNECTOR" retained="false" open="true" node1="1" node2="2"/>
<iidm:switch id="BB" name="BC" fictitious="true" kind="BREAKER" retained="true" open="true" node1="2" node2="3"/>
<iidm:switch id="BD" name="BE" kind="BREAKER" retained="true" open="false" node1="3" node2="4"/>
<iidm:switch id="BF" name="BG" kind="DISCONNECTOR" retained="false" open="false" node1="3" node2="5"/>
<iidm:switch id="BH" name="BI" kind="DISCONNECTOR" retained="false" open="true" node1="9" node2="3"/>
<iidm:switch id="BJ" name="BK" kind="BREAKER" retained="true" open="false" node1="6" node2="7"/>
<iidm:switch id="BL" name="BM" kind="BREAKER" retained="true" open="false" node1="8" node2="9"/>
<iidm:switch id="BN" name="BO" kind="DISCONNECTOR" retained="false" open="false" node1="9" node2="10"/>
<iidm:switch id="BP" name="BQ" kind="BREAKER" retained="true" open="true" node1="11" node2="12"/>
<iidm:switch id="BR" name="BS" kind="BREAKER" retained="true" open="true" node1="13" node2="14"/>
<iidm:switch id="BT" name="BU" kind="BREAKER" retained="true" open="false" node1="15" node2="16"/>
<iidm:switch id="BV" name="BW" kind="BREAKER" retained="true" open="false" node1="17" node2="18"/>
<iidm:switch id="BX" name="BY" kind="BREAKER" retained="true" open="false" node1="19" node2="20"/>
<iidm:switch id="BZ" name="CA" kind="BREAKER" retained="true" open="false" node1="21" node2="22"/>
<iidm:bus v="236.44736" angle="15.250391" nodes="0,1,6,7,8,9,10,15,16,17,18,19,20,21,22"/>
<iidm:bus v="236.44736" angle="15.250391" nodes="0,1,6,7,15,16,17,18,19,20,21,22"/>
</iidm:nodeBreakerTopology>
<iidm:generator id="CB" energySource="HYDRO" minP="0.0" maxP="70.0" voltageRegulatorOn="false" targetP="0.0" targetV="0.0" targetQ="0.0" node="12">
<iidm:reactiveCapabilityCurve>
Expand All @@ -64,4 +59,4 @@
<iidm:load id="CH" loadType="UNDEFINED" p0="-5.102249" q0="4.9081216" node="22" p="-5.102249" q="4.9081216"/>
</iidm:voltageLevel>
</iidm:substation>
</iidm:network>
</iidm:network>

0 comments on commit 5c11d46

Please sign in to comment.