Skip to content

Commit

Permalink
Adapt to security-api methods changes
Browse files Browse the repository at this point in the history
  • Loading branch information
quinarygio committed Apr 20, 2018
1 parent 253313f commit 2c43a0a
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 20 deletions.
5 changes: 5 additions & 0 deletions online-rest-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@
</dependency>

<!-- Test dependencies -->
<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-iidm-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@
import eu.itesla_project.online.rest.model.ViolationSynthesis;
import eu.itesla_project.online.rest.model.WorkflowInfo;
import eu.itesla_project.online.rest.model.WorkflowResult;

import com.powsybl.iidm.network.Network;
import com.powsybl.security.LimitViolation;
import com.powsybl.security.LimitViolationHelper;
import com.powsybl.security.LimitViolationType;

/**
Expand Down Expand Up @@ -137,15 +140,15 @@ public WorkflowResult getWorkflowResult(String processId, String workflowId) thr
Map<Integer, List<LimitViolation>> violations = onlinedb.getViolations(workflowId,
OnlineStep.LOAD_FLOW);
if (violations != null) {

violations.forEach((state, viols) -> {
Network network = onlinedb.getState(workflowId, state);
StateProcessingStatus sp = onlinedb.getStatesProcessingStatus(workflowId).get(state);
String status = sp.getStatus().get("LOAD_FLOW");
PreContingencyResult pcr = new PreContingencyResult(state, viols.isEmpty(),
status != null && "SUCCESS".equals(status));
viols.forEach(lv -> {
pcr.addViolation(new Violation(lv.getCountry().toString(), lv.getSubjectId(),
lv.getLimitType().name(), lv.getLimit(), lv.getValue(), (int) lv.getBaseVoltage()));
pcr.addViolation(new Violation(LimitViolationHelper.getCountry(lv, network).toString(), lv.getSubjectId(),
lv.getLimitType().name(), lv.getLimit(), lv.getValue(), (int) LimitViolationHelper.getNominalVoltage(lv, network)));
});
res.addPreContingency(pcr);
});
Expand Down Expand Up @@ -177,6 +180,7 @@ public WorkflowResult getWorkflowResult(String processId, String workflowId) thr
if (violsMap != null) {

violsMap.forEach((state, contViolMap) -> {
Network network = onlinedb.getState(workflowId, state);
contViolMap.forEach((cont, contViols) -> {
Map<Integer, SimulationResult> srMap = postMap.get(cont);
if (srMap == null) {
Expand All @@ -190,9 +194,9 @@ public WorkflowResult getWorkflowResult(String processId, String workflowId) thr
}

contViols.forEach(lv -> {
sr.addViolation(new Violation(lv.getCountry().toString(), lv.getSubjectId(),
sr.addViolation(new Violation(LimitViolationHelper.getCountry(lv, network).toString(), lv.getSubjectId(),
lv.getLimitType().name(), lv.getLimit(), lv.getValue(),
(int) lv.getBaseVoltage()));
(int) LimitViolationHelper.getNominalVoltage(lv, network)));
});
});

Expand Down Expand Up @@ -242,12 +246,13 @@ public ProcessSynthesis getSynthesis(String processId) throws Exception {

if (previolsMap != null) {
previolsMap.forEach((state, limitList) -> {
Network network = onlinedb.getState(workflowId, state);
StateSynthesis statesynt = statesMap.get(state);
if (statesynt == null) {
statesynt = new StateSynthesis(state);
statesMap.put(state, statesynt);
}
fillViolationSynthesis(dateTime, statesynt.getPreContingencyViolations(), limitList);
fillViolationSynthesis(dateTime, statesynt.getPreContingencyViolations(), limitList, network);
});
}

Expand All @@ -263,14 +268,14 @@ public ProcessSynthesis getSynthesis(String processId) throws Exception {
}

Map<String, List<ViolationSynthesis>> contingencyMap = statesynt.getPostContingencyViolations();

Network network = onlinedb.getState(workflowId, state);
contingencyViolationMap.forEach((cont, limitList) -> {
List<ViolationSynthesis> violationList = contingencyMap.get(cont);
if (violationList == null) {
violationList = new ArrayList();
contingencyMap.put(cont, violationList);
}
fillViolationSynthesis(dateTime, violationList, limitList);
fillViolationSynthesis(dateTime, violationList, limitList, network);
});
});
}
Expand All @@ -285,7 +290,7 @@ public ProcessSynthesis getSynthesis(String processId) throws Exception {
return null;
}

private void fillViolationSynthesis(DateTime dateTime, List<ViolationSynthesis> violationList, List<LimitViolation> limitList) {
private void fillViolationSynthesis(DateTime dateTime, List<ViolationSynthesis> violationList, List<LimitViolation> limitList, Network network) {
limitList.forEach(lv -> {
LimitViolationType violationType = lv.getLimitType();
String equipment = lv.getSubjectId();
Expand All @@ -298,7 +303,7 @@ private void fillViolationSynthesis(DateTime dateTime, List<ViolationSynthesis>
if (searchSynt.isPresent()) {
synt = searchSynt.get();
} else {
synt = new ViolationSynthesis(equipment, lv.getBaseVoltage(), violationType, limit, lv.getLimitName());
synt = new ViolationSynthesis(equipment, LimitViolationHelper.getNominalVoltage(lv, network), violationType, limit, lv.getLimitName());
violationList.add(synt);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,15 @@
import org.joda.time.Interval;

import eu.itesla_project.cases.CaseType;

import com.powsybl.iidm.network.Branch;
import com.powsybl.iidm.network.Country;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.NetworkFactory;
import com.powsybl.iidm.network.Substation;
import com.powsybl.iidm.network.TopologyKind;
import com.powsybl.iidm.network.VoltageLevel;

import eu.itesla_project.modules.contingencies.ActionParameters;
import eu.itesla_project.modules.online.OnlineDb;
import eu.itesla_project.modules.online.OnlineProcess;
Expand All @@ -41,8 +47,12 @@ public class OnlineDbMock implements OnlineDb {

public OnlineDbMock() {
network = NetworkFactory.create("test", "test");
network.newSubstation().setId("sub1").setName("substation1").setCountry(Country.FR).add();

Substation substation1 = network.newSubstation().setId("sub1").setName("substation1").setCountry(Country.FR).add();
VoltageLevel voltageLevel1 = substation1.newVoltageLevel()
.setId("voltageLevel1")
.setNominalV(400)
.setTopologyKind(TopologyKind.NODE_BREAKER)
.add();
processMap = new HashMap<String, OnlineProcess>();
DateTime dt = new DateTime(2016, 1, 15, 01, 0, 0, 0);
OnlineProcess p = new OnlineProcess("1111", "name1", "owner1", CaseType.FO.toString(), dt,
Expand Down Expand Up @@ -279,7 +289,7 @@ public List<Integer> listStoredStates(String workflowId) {

@Override
public Network getState(String workflowId, Integer stateId) {
return null;
return network;
}

@Override
Expand Down Expand Up @@ -324,7 +334,7 @@ public Map<Integer, List<LimitViolation>> getViolations(String workflowId, Onlin
return null;
Map<Integer, List<LimitViolation>> res = new HashMap<Integer, List<LimitViolation>>();
List<LimitViolation> viols = new ArrayList<>();
LimitViolation lv = new LimitViolation("sub1", LimitViolationType.CURRENT, 100, "HIGH_CURRENT", 0, 110, Country.FR, 240);
LimitViolation lv = new LimitViolation("voltageLevel1", LimitViolationType.CURRENT, "HIGH_CURRENT", Integer.MAX_VALUE, 100, 0, 110, Branch.Side.ONE);
viols.add(lv);
res.put(0, viols);
return res;
Expand Down Expand Up @@ -373,7 +383,7 @@ public Map<Integer, Map<String, List<LimitViolation>>> getPostContingencyViolati
Map<Integer, Map<String, List<LimitViolation>>> res = new HashMap<>();
Map<String, List<LimitViolation>> mmap = new HashMap<>();
List<LimitViolation> viols = new ArrayList<>();
LimitViolation lv = new LimitViolation("sub1", LimitViolationType.CURRENT, 100, "HIGH_CURRENT", 0, 200, Country.FR, 120);
LimitViolation lv = new LimitViolation("voltageLevel1", LimitViolationType.CURRENT, "HIGH_CURRENT", Integer.MAX_VALUE, 100, 0, 200, Branch.Side.ONE);
viols.add(lv);
mmap.put("test_contingency", viols);
res.put(0, mmap);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1316,11 +1316,12 @@ public void storeViolations(String workflowId, Integer stateId, OnlineStep step,
private void storeViolations(String workflowId, String mapName, List<LimitViolation> violations) {
try {
MVStore wfMVStore = getStore(workflowId);
Network network = getState(workflowId, 0);
Map<String, String> metricsMap = wfMVStore.openMap(mapName, mapBuilder);
int violationIndex = 0;
for (LimitViolation limitViolation : violations) {
String violationId = limitViolation.getSubjectId() + "_" + violationIndex;
metricsMap.put(violationId, OnlineDbMVStoreUtils.limitViolationToJson(limitViolation));
metricsMap.put(violationId, OnlineDbMVStoreUtils.limitViolationToJson(limitViolation, network));
violationIndex++;
}
wfMVStore.commit();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,8 @@ private void analyseLoadFlowResult(String baseStateId, int index, Contingency co

network.getStateManager().setWorkingState(contingencyStateId);

List<LimitViolation> violations = baseVoltageFilter.apply(Security.checkLimits(network, config.getCurrentLimitType(), 1f));
String report = Security.printLimitsViolations(violations, CURRENT_FILTER);
List<LimitViolation> violations = baseVoltageFilter.apply(Security.checkLimits(network, config.getCurrentLimitType(), 1f), network);
String report = Security.printLimitsViolations(violations, network, CURRENT_FILTER);
if (report != null) {
LOGGER.info("Constraints after contingency {} for {}:\n{}", contingency.getId(), baseStateId, report);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ public StabilizationResult run() {
String baseStateId = network.getStateManager().getWorkingStateId();

List<LimitViolation> violations = baseVoltageFilter.apply(Security.checkLimits(network, config.getCurrentLimitType(),
config.getLimitReduction()));
String report = Security.printLimitsViolations(violations, CURRENT_FILTER);
config.getLimitReduction()), network);
String report = Security.printLimitsViolations(violations, network, CURRENT_FILTER);
if (report != null) {
LOGGER.warn("Constraints after stabilization for {}:\n{}", baseStateId, report);
}
Expand Down

0 comments on commit 2c43a0a

Please sign in to comment.