Skip to content

Commit

Permalink
fix return impacts when active power control modification
Browse files Browse the repository at this point in the history
Signed-off-by: achour94 <[email protected]>
  • Loading branch information
achour94 committed Nov 22, 2023
1 parent 901b28e commit 12a2b1a
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -765,37 +765,47 @@ public Reporter modifyActivePowerControlAttributes(ActivePowerControl<?> activeP
Reporter subReporter,
Reporter subReporterSetpoints) {
List<Report> reports = new ArrayList<>();
double oldDroop = Double.NaN;
boolean oldParticipate = false;
double droop = droopInfo != null ? droopInfo.getValue() : Double.NaN;
if (activePowerControl != null) {
oldDroop = activePowerControl.getDroop();
oldParticipate = activePowerControl.isParticipate();
}

if (participateInfo != null) {
activePowerControlAdder
.withParticipate(participateInfo.getValue());
reports.add(ModificationUtils.getInstance().buildModificationReport(activePowerControl != null ? activePowerControl.isParticipate() : null,
participateInfo.getValue(),
"Participate"));
} else {
activePowerControlAdder
.withParticipate(oldParticipate);
}

if (droopInfo != null) {
activePowerControlAdder
.withDroop(droop);
reports.add(ModificationUtils.getInstance().buildModificationReport(oldDroop,
droop,
"Droop"));
double oldDroop = activePowerControl.getDroop();
boolean oldParticipate = activePowerControl.isParticipate();
if (participateInfo != null) {
activePowerControl.setParticipate(participateInfo.getValue());
reports.add(ModificationUtils.getInstance().buildModificationReport(oldParticipate,
participateInfo.getValue(),
"Participate"));
}
if (droopInfo != null) {
activePowerControl.setDroop(droop);
reports.add(ModificationUtils.getInstance().buildModificationReport(oldDroop,
droop,
"Droop"));
}
} else {
// create new active power control extension if not exist
if (participateInfo != null) {
activePowerControlAdder
.withParticipate(participateInfo.getValue());
reports.add(ModificationUtils.getInstance().buildModificationReport(false,
participateInfo.getValue(),
"Participate"));
} else {
activePowerControlAdder
.withParticipate(false);
}
if (droopInfo != null) {
activePowerControlAdder
.withDroop(droop);
reports.add(ModificationUtils.getInstance().buildModificationReport(Double.NaN,
droop,
"Droop"));
} else {
activePowerControlAdder
.withDroop(Double.NaN);
}
activePowerControlAdder
.withDroop(oldDroop);
.add();
}
activePowerControlAdder
.add();

Reporter subReporterSetpoints2 = subReporterSetpoints;
if (subReporterSetpoints == null && !reports.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.junit.Test;
import org.junit.jupiter.api.Tag;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.util.CollectionUtils;

import java.util.*;
Expand Down Expand Up @@ -217,6 +218,40 @@ public void testDroopUnchanged() throws Exception {
assertEquals(18f, createdModification.getDroop().getValue());
}

@Test
public void testImpactsAfterActivePowerControlModifications() throws Exception {
BatteryModificationInfos batteryModificationInfos = (BatteryModificationInfos) buildModification();
String modificationToCreateJson = mapper.writeValueAsString(batteryModificationInfos);
mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andReturn();
Battery battery = getNetwork().getBattery("v3Battery");
assertEquals(0.1f, battery.getExtension(ActivePowerControl.class).getDroop());
assertEquals(true, battery.getExtension(ActivePowerControl.class).isParticipate());
//modify only droop
batteryModificationInfos.setDroop(new AttributeModification<>(0.5f, OperationType.SET));
modificationToCreateJson = mapper.writeValueAsString(batteryModificationInfos);
MvcResult mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andReturn();
//check impacts
String resultAsString = mvcResult.getResponse().getContentAsString();
NetworkModificationResult networkModificationResult = mapper.readValue(resultAsString, NetworkModificationResult.class);
assertEquals(1, networkModificationResult.getNetworkImpacts().size());
assertEquals(1, networkModificationResult.getImpactedSubstationsIds().size());
assertEquals("[s2]", networkModificationResult.getImpactedSubstationsIds().toString());
//modify only participate
batteryModificationInfos.setParticipate(new AttributeModification<>(false, OperationType.SET));
modificationToCreateJson = mapper.writeValueAsString(batteryModificationInfos);
mvcResult = mockMvc.perform(post(getNetworkModificationUri()).content(modificationToCreateJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andReturn();
//check impacts
resultAsString = mvcResult.getResponse().getContentAsString();
networkModificationResult = mapper.readValue(resultAsString, NetworkModificationResult.class);
assertEquals(1, networkModificationResult.getNetworkImpacts().size());
assertEquals(1, networkModificationResult.getImpactedSubstationsIds().size());
assertEquals("[s2]", networkModificationResult.getImpactedSubstationsIds().toString());

}

@Test
public void testMinQGreaterThanMaxQ() throws Exception {
BatteryModificationInfos batteryModificationInfos = (BatteryModificationInfos) buildModification();
Expand Down

0 comments on commit 12a2b1a

Please sign in to comment.