23
23
import com .powsybl .openloadflow .network .LfBus ;
24
24
import com .powsybl .openloadflow .network .LfNetwork ;
25
25
import com .powsybl .openloadflow .network .impl .PropagatedContingency ;
26
- import com .powsybl .sensitivity .SensitivityAnalysisResult ;
27
- import com .powsybl .sensitivity .SensitivityResultWriter ;
28
26
import org .slf4j .Logger ;
29
27
import org .slf4j .LoggerFactory ;
30
28
@@ -136,10 +134,9 @@ private static boolean isGroupOfElementsBreakingConnectivity(LfNetwork lfNetwork
136
134
return false ;
137
135
}
138
136
139
- private static List <ConnectivityAnalysisResult > computeConnectivityData (LfNetwork lfNetwork , AbstractSensitivityAnalysis .SensitivityFactorHolder <DcVariableType , DcEquationType > factorHolder ,
140
- List <PropagatedContingency > potentiallyBreakingConnectivityContingencies , Map <String , ComputedContingencyElement > contingencyElementByBranch ,
141
- List <PropagatedContingency > nonBreakingConnectivityContingencies ,
142
- SensitivityResultWriter resultWriter ) {
137
+ private static List <ConnectivityAnalysisResult > computeConnectivityData (LfNetwork lfNetwork , List <PropagatedContingency > potentiallyBreakingConnectivityContingencies ,
138
+ Map <String , ComputedContingencyElement > contingencyElementByBranch ,
139
+ List <PropagatedContingency > nonBreakingConnectivityContingencies ) {
143
140
if (potentiallyBreakingConnectivityContingencies .isEmpty ()) {
144
141
return Collections .emptyList ();
145
142
}
@@ -165,16 +162,10 @@ private static List<ConnectivityAnalysisResult> computeConnectivityData(LfNetwor
165
162
nonBreakingConnectivityContingencies .add (contingency );
166
163
} else {
167
164
// only compute for factors that have to be computed for this contingency lost
168
- List <AbstractSensitivityAnalysis .LfSensitivityFactor <DcVariableType , DcEquationType >> lfFactors = factorHolder .getFactorsForContingencies (List .of (contingency .getContingency ().getId ()));
169
- if (!lfFactors .isEmpty ()) {
170
- Set <String > elementsToReconnect = computeElementsToReconnect (connectivity , breakingConnectivityElements );
171
- ConnectivityAnalysisResult connectivityAnalysisResult = new ConnectivityAnalysisResult (elementsToReconnect , connectivity , lfNetwork );
172
- connectivityAnalysisResult .setPropagatedContingency (contingency );
173
- connectivityAnalysisResults .add (connectivityAnalysisResult );
174
- } else {
175
- // write contingency status
176
- resultWriter .writeContingencyStatus (contingency .getIndex (), SensitivityAnalysisResult .Status .SUCCESS );
177
- }
165
+ Set <String > elementsToReconnect = computeElementsToReconnect (connectivity , breakingConnectivityElements );
166
+ ConnectivityAnalysisResult connectivityAnalysisResult = new ConnectivityAnalysisResult (elementsToReconnect , connectivity , lfNetwork );
167
+ connectivityAnalysisResult .setPropagatedContingency (contingency );
168
+ connectivityAnalysisResults .add (connectivityAnalysisResult );
178
169
}
179
170
} finally {
180
171
connectivity .undoTemporaryChanges ();
@@ -288,8 +279,7 @@ private static void fillRhsContingency(LfNetwork lfNetwork, EquationSystem<DcVar
288
279
}
289
280
}
290
281
291
- public static ConnectivityBreakAnalysisResults run (DcLoadFlowContext loadFlowContext , AbstractSensitivityAnalysis .SensitivityFactorHolder <DcVariableType , DcEquationType > factorHolder ,
292
- List <PropagatedContingency > contingencies , SensitivityResultWriter resultWriter ) {
282
+ public static ConnectivityBreakAnalysisResults run (DcLoadFlowContext loadFlowContext , List <PropagatedContingency > contingencies ) {
293
283
// index contingency elements by branch id
294
284
Map <String , ComputedContingencyElement > contingencyElementByBranch = createContingencyElementsIndexByBranchId (contingencies , loadFlowContext .getNetwork (), loadFlowContext .getEquationSystem ());
295
285
@@ -311,8 +301,8 @@ public static ConnectivityBreakAnalysisResults run(DcLoadFlowContext loadFlowCon
311
301
312
302
// this second method process all contingencies that potentially break connectivity and using graph algorithms
313
303
// find remaining contingencies that do not break connectivity
314
- List <ConnectivityAnalysisResult > connectivityAnalysisResults = computeConnectivityData (loadFlowContext .getNetwork (), factorHolder ,
315
- potentiallyBreakingConnectivityContingencies , contingencyElementByBranch , nonBreakingConnectivityContingencies , resultWriter );
304
+ List <ConnectivityAnalysisResult > connectivityAnalysisResults = computeConnectivityData (loadFlowContext .getNetwork (),
305
+ potentiallyBreakingConnectivityContingencies , contingencyElementByBranch , nonBreakingConnectivityContingencies );
316
306
LOGGER .info ("After graph based connectivity analysis, {} contingencies do not break connectivity, {} contingencies break connectivity" ,
317
307
nonBreakingConnectivityContingencies .size (), connectivityAnalysisResults .size ());
318
308
0 commit comments