@@ -64,10 +64,20 @@ public DanglingLine getDanglingLine(String voltageLevelId) {
64
64
65
65
@ Override
66
66
public void remove () {
67
+ remove (false );
68
+ }
69
+
70
+ @ Override
71
+ public void remove (boolean updateDanglingLines ) {
67
72
var resource = getResource ();
68
73
69
74
index .notifyBeforeRemoval (this );
70
75
76
+ if (updateDanglingLines ) {
77
+ updateDanglingLine (getDanglingLine1 ());
78
+ updateDanglingLine (getDanglingLine2 ());
79
+ }
80
+
71
81
getDanglingLine1 ().removeTieLine ();
72
82
getDanglingLine2 ().removeTieLine ();
73
83
index .removeTieLine (resource .getId ());
@@ -399,4 +409,22 @@ static int getOverloadDuration(Branch.Overload o1, Branch.Overload o2) {
399
409
int duration2 = o2 != null ? o2 .getTemporaryLimit ().getAcceptableDuration () : Integer .MAX_VALUE ;
400
410
return Math .min (duration1 , duration2 );
401
411
}
412
+
413
+ private static void updateDanglingLine (DanglingLine danglingLine ) {
414
+ // Only update if we have values
415
+ if (!Double .isNaN (danglingLine .getBoundary ().getP ())) {
416
+ danglingLine .setP0 (-danglingLine .getBoundary ().getP ());
417
+ if (danglingLine .getGeneration () != null ) {
418
+ // We do not reset regulation if we only have computed a dc load flow
419
+ danglingLine .getGeneration ().setTargetP (0.0 );
420
+ }
421
+ }
422
+ if (!Double .isNaN (danglingLine .getBoundary ().getQ ())) {
423
+ danglingLine .setQ0 (-danglingLine .getBoundary ().getQ ());
424
+ if (danglingLine .getGeneration () != null ) {
425
+ // If q values are available a complete ac load flow has been computed, we reset regulation
426
+ danglingLine .getGeneration ().setTargetQ (0.0 ).setVoltageRegulationOn (false ).setTargetV (Double .NaN );
427
+ }
428
+ }
429
+ }
402
430
}
0 commit comments