Skip to content

Commit ae0bdce

Browse files
committed
Changes in security analysis API
Signed-off-by: Damien Jeandemange <damien.jeandemange@artelys.com>
1 parent a65d041 commit ae0bdce

File tree

7 files changed

+49
-30
lines changed

7 files changed

+49
-30
lines changed

src/main/java/com/powsybl/openloadflow/network/LfBus.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
*/
88
package com.powsybl.openloadflow.network;
99

10+
import com.powsybl.contingency.violations.ViolationLocation;
1011
import com.powsybl.iidm.network.Country;
1112
import com.powsybl.openloadflow.util.Evaluable;
12-
import com.powsybl.security.ViolationLocation;
1313
import com.powsybl.security.results.BusResult;
1414

1515
import java.util.*;

src/main/java/com/powsybl/openloadflow/network/impl/LfBoundaryLineBus.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
*/
88
package com.powsybl.openloadflow.network.impl;
99

10+
import com.powsybl.contingency.violations.ViolationLocation;
1011
import com.powsybl.iidm.network.BoundaryLine;
1112
import com.powsybl.openloadflow.network.LfNetwork;
1213
import com.powsybl.openloadflow.network.LfNetworkParameters;
1314
import com.powsybl.openloadflow.network.LfNetworkStateUpdateParameters;
14-
import com.powsybl.security.ViolationLocation;
1515

1616
import java.util.List;
1717

src/main/java/com/powsybl/openloadflow/network/impl/LfBusImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77
*/
88
package com.powsybl.openloadflow.network.impl;
99

10+
import com.powsybl.contingency.violations.BusBreakerViolationLocation;
11+
import com.powsybl.contingency.violations.NodeBreakerViolationLocation;
12+
import com.powsybl.contingency.violations.ViolationLocation;
1013
import com.powsybl.iidm.network.*;
1114
import com.powsybl.iidm.network.extensions.LoadAsymmetrical;
1215
import com.powsybl.iidm.network.extensions.ReferenceTerminals;
1316
import com.powsybl.iidm.network.extensions.SlackTerminal;
1417
import com.powsybl.openloadflow.network.*;
1518
import com.powsybl.openloadflow.util.PerUnit;
16-
import com.powsybl.security.BusBreakerViolationLocation;
17-
import com.powsybl.security.NodeBreakerViolationLocation;
18-
import com.powsybl.security.ViolationLocation;
1919
import com.powsybl.security.results.BusResult;
2020

2121
import java.util.*;

src/main/java/com/powsybl/openloadflow/network/impl/LfStarBus.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
*/
88
package com.powsybl.openloadflow.network.impl;
99

10+
import com.powsybl.contingency.violations.ViolationLocation;
1011
import com.powsybl.iidm.network.ThreeWindingsTransformer;
1112
import com.powsybl.openloadflow.network.LfNetwork;
1213
import com.powsybl.openloadflow.network.LfNetworkParameters;
1314
import com.powsybl.openloadflow.network.LfNetworkStateUpdateParameters;
14-
import com.powsybl.security.ViolationLocation;
1515

1616
import java.util.List;
1717

src/main/java/com/powsybl/openloadflow/sa/AbstractSecurityAnalysis.java

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@
1616
import com.powsybl.contingency.ContingenciesProvider;
1717
import com.powsybl.contingency.Contingency;
1818
import com.powsybl.contingency.ContingencyContext;
19+
import com.powsybl.contingency.strategy.ConditionalActions;
20+
import com.powsybl.contingency.strategy.OperatorStrategy;
21+
import com.powsybl.contingency.strategy.condition.AllViolationCondition;
22+
import com.powsybl.contingency.strategy.condition.AnyViolationCondition;
23+
import com.powsybl.contingency.strategy.condition.AtLeastOneViolationCondition;
24+
import com.powsybl.contingency.strategy.condition.TrueCondition;
25+
import com.powsybl.contingency.violations.LimitViolation;
26+
import com.powsybl.contingency.violations.LimitViolationType;
1927
import com.powsybl.iidm.network.*;
2028
import com.powsybl.loadflow.LoadFlowParameters;
2129
import com.powsybl.loadflow.LoadFlowResult;
@@ -36,19 +44,19 @@
3644
import com.powsybl.openloadflow.util.Reports;
3745
import com.powsybl.openloadflow.util.mt.ContingencyMultiThreadHelper;
3846
import com.powsybl.security.*;
39-
import com.powsybl.security.condition.*;
4047
import com.powsybl.security.limitreduction.LimitReduction;
4148
import com.powsybl.security.monitor.StateMonitor;
4249
import com.powsybl.security.monitor.StateMonitorIndex;
4350
import com.powsybl.security.results.*;
44-
import com.powsybl.security.strategy.ConditionalActions;
45-
import com.powsybl.security.strategy.OperatorStrategy;
4651
import org.slf4j.Logger;
4752
import org.slf4j.LoggerFactory;
4853
import org.slf4j.event.Level;
4954

5055
import java.util.*;
51-
import java.util.concurrent.*;
56+
import java.util.concurrent.CompletableFuture;
57+
import java.util.concurrent.ExecutionException;
58+
import java.util.concurrent.Executor;
59+
import java.util.concurrent.TimeUnit;
5260
import java.util.function.Consumer;
5361
import java.util.function.Function;
5462
import java.util.stream.Collectors;
@@ -260,7 +268,7 @@ SecurityAnalysisResult runSimulationsOnAllComponents(LfNetworkList networks, Lis
260268
PreContingencyResult mergedPrecontingencyResult =
261269
new PreContingencyResult(result.getPreContingencyResult().getStatus(),
262270
new LimitViolationsResult(preContingencyViolations),
263-
mergedPreContingencyNetworkResult);
271+
mergedPreContingencyNetworkResult, Double.NaN);
264272
return new SecurityAnalysisResult(mergedPrecontingencyResult, postContingencyResults, operatorStrategyResults);
265273
}
266274

@@ -289,7 +297,7 @@ void mergeSecurityAnalysisResult(SecurityAnalysisResult resultToMerge, Map<Strin
289297

290298
PostContingencyResult mergedPostContingencyResult =
291299
new PostContingencyResult(originalResult.getContingency(), originalResult.getStatus(),
292-
new LimitViolationsResult(violations), mergedNetworkResult, originalResult.getConnectivityResult());
300+
new LimitViolationsResult(violations), mergedNetworkResult, originalResult.getConnectivityResult(), Double.NaN);
293301

294302
postContingencyResults.put(contingencyId, mergedPostContingencyResult);
295303
} else {
@@ -315,7 +323,7 @@ void mergeSecurityAnalysisResult(SecurityAnalysisResult resultToMerge, Map<Strin
315323

316324
OperatorStrategyResult.ConditionalActionsResult mergedConditionalActionResult
317325
= new OperatorStrategyResult.ConditionalActionsResult(conditionalActionsResult.getConditionalActionsId(),
318-
conditionalActionsResult.getStatus(), new LimitViolationsResult(violations), mergedNetworkResult);
326+
conditionalActionsResult.getStatus(), new LimitViolationsResult(violations), mergedNetworkResult, Double.NaN);
319327
conditionalActionsResults.add(mergedConditionalActionResult);
320328

321329
} else {
@@ -816,8 +824,8 @@ protected SecurityAnalysisResult runSimulations(LfNetwork lfNetwork, List<Propag
816824
new PreContingencyResult(
817825
preContingencyLoadFlowResult.toComponentResultStatus().status(),
818826
new LimitViolationsResult(preContingencyLimitViolationManager.getLimitViolations()),
819-
preContingencyNetworkResult.getBranchResults(), preContingencyNetworkResult.getBusResults(),
820-
preContingencyNetworkResult.getThreeWindingsTransformerResults()),
827+
new NetworkResult(preContingencyNetworkResult.getBranchResults(), preContingencyNetworkResult.getBusResults(),
828+
preContingencyNetworkResult.getThreeWindingsTransformerResults()), Double.NaN),
821829
postContingencyResults, operatorStrategyResults);
822830
}
823831
}
@@ -893,10 +901,10 @@ protected PostContingencyResult runPostContingencySimulation(LfNetwork network,
893901

894902
return new PostContingencyResult(contingency, status,
895903
new LimitViolationsResult(postContingencyLimitViolationManager.getLimitViolations()),
896-
postContingencyNetworkResult.getBranchResults(),
904+
new NetworkResult(postContingencyNetworkResult.getBranchResults(),
897905
postContingencyNetworkResult.getBusResults(),
898-
postContingencyNetworkResult.getThreeWindingsTransformerResults(),
899-
connectivityResult);
906+
postContingencyNetworkResult.getThreeWindingsTransformerResults()),
907+
connectivityResult, Double.NaN);
900908
}
901909

902910
protected void logPostContingencyStart(LfNetwork network, LfContingency lfContingency) {
@@ -950,11 +958,14 @@ protected OperatorStrategyResult runActionSimulation(LfNetwork network, C contex
950958

951959
logActionEnd(network, operatorStrategy, stopwatch);
952960

953-
return new OperatorStrategyResult(operatorStrategy, status,
961+
return new OperatorStrategyResult(operatorStrategy,
962+
List.of(new OperatorStrategyResult.ConditionalActionsResult(operatorStrategy.getId(), status,
954963
new LimitViolationsResult(postActionsViolationManager.getLimitViolations()),
955964
new NetworkResult(postActionsNetworkResult.getBranchResults(),
956965
postActionsNetworkResult.getBusResults(),
957-
postActionsNetworkResult.getThreeWindingsTransformerResults()));
966+
postActionsNetworkResult.getThreeWindingsTransformerResults()),
967+
Double.NaN)
968+
));
958969
}
959970

960971
protected void logActionStart(LfNetwork network, OperatorStrategy operatorStrategy) {

src/main/java/com/powsybl/openloadflow/sa/LimitViolationManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
*/
88
package com.powsybl.openloadflow.sa;
99

10+
import com.powsybl.contingency.violations.LimitViolation;
11+
import com.powsybl.contingency.violations.LimitViolationType;
1012
import com.powsybl.iidm.network.*;
1113
import com.powsybl.openloadflow.network.LfBranch;
1214
import com.powsybl.openloadflow.network.LfBus;

src/main/java/com/powsybl/openloadflow/sa/WoodburyDcSecurityAnalysis.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.powsybl.action.TerminalsConnectionAction;
1515
import com.powsybl.commons.report.ReportNode;
1616
import com.powsybl.contingency.Contingency;
17+
import com.powsybl.contingency.strategy.OperatorStrategy;
1718
import com.powsybl.iidm.network.Network;
1819
import com.powsybl.iidm.network.extensions.HvdcAngleDroopActivePowerControl;
1920
import com.powsybl.loadflow.LoadFlowParameters;
@@ -45,7 +46,6 @@
4546
import com.powsybl.security.monitor.StateMonitor;
4647
import com.powsybl.security.monitor.StateMonitorIndex;
4748
import com.powsybl.security.results.*;
48-
import com.powsybl.security.strategy.OperatorStrategy;
4949
import org.slf4j.event.Level;
5050

5151
import java.util.*;
@@ -245,10 +245,10 @@ private PostContingencyResult computePostContingencyResultFromPostContingencySta
245245
return new PostContingencyResult(contingency,
246246
PostContingencyComputationStatus.CONVERGED,
247247
new LimitViolationsResult(postContingencyLimitViolationManager.getLimitViolations()),
248-
postContingencyNetworkResult.getBranchResults(),
248+
new NetworkResult(postContingencyNetworkResult.getBranchResults(),
249249
postContingencyNetworkResult.getBusResults(),
250-
postContingencyNetworkResult.getThreeWindingsTransformerResults(),
251-
connectivityResult);
250+
postContingencyNetworkResult.getThreeWindingsTransformerResults()),
251+
connectivityResult, Double.NaN);
252252
}
253253

254254
/**
@@ -277,11 +277,17 @@ private OperatorStrategyResult computeOperatorStrategyResultFromPostContingencyA
277277
woodburyContext.limitReductions, woodburyContext.violationsParameters);
278278
postActionsViolationManager.detectViolations(lfNetwork, isBranchDisabledDueToContingency);
279279

280-
return new OperatorStrategyResult(operatorStrategy, PostContingencyComputationStatus.CONVERGED,
281-
new LimitViolationsResult(postActionsViolationManager.getLimitViolations()),
282-
new NetworkResult(postActionsNetworkResult.getBranchResults(),
280+
return new OperatorStrategyResult(operatorStrategy,
281+
List.of(
282+
new OperatorStrategyResult.ConditionalActionsResult(
283+
operatorStrategy.getId(), PostContingencyComputationStatus.CONVERGED,
284+
new LimitViolationsResult(postActionsViolationManager.getLimitViolations()),
285+
new NetworkResult(postActionsNetworkResult.getBranchResults(),
283286
postActionsNetworkResult.getBusResults(),
284-
postActionsNetworkResult.getThreeWindingsTransformerResults()));
287+
postActionsNetworkResult.getThreeWindingsTransformerResults()),
288+
Double.NaN)
289+
)
290+
);
285291
}
286292

287293
/**
@@ -512,8 +518,8 @@ protected SecurityAnalysisResult runSimulations(LfNetwork lfNetwork, List<Propag
512518
return new SecurityAnalysisResult(
513519
new PreContingencyResult(LoadFlowResult.ComponentResult.Status.CONVERGED,
514520
new LimitViolationsResult(preContingencyLimitViolationManager.getLimitViolations()),
515-
preContingencyNetworkResult.getBranchResults(), preContingencyNetworkResult.getBusResults(),
516-
preContingencyNetworkResult.getThreeWindingsTransformerResults()),
521+
new NetworkResult(preContingencyNetworkResult.getBranchResults(), preContingencyNetworkResult.getBusResults(),
522+
preContingencyNetworkResult.getThreeWindingsTransformerResults()), Double.NaN),
517523
postContingencyResults, operatorStrategyResults);
518524
}
519525
}

0 commit comments

Comments
 (0)