Skip to content

Commit

Permalink
add checks on active power control creation
Browse files Browse the repository at this point in the history
Signed-off-by: Etienne LESOT <[email protected]>
  • Loading branch information
EtienneLt committed Oct 14, 2024
1 parent b1f1295 commit 0fab5a8
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ public static void setNewValue(Battery battery, String batteryField, @NotNull St
ActivePowerControlAdder<Battery> activePowerControlAdder = battery.newExtension(ActivePowerControlAdder.class);
ModificationUtils.getInstance().modifyActivePowerControlAttributes(
activePowerControl, activePowerControlAdder, null,
new AttributeModification<>(Float.parseFloat(newValue), OperationType.SET), null, null);
new AttributeModification<>(Float.parseFloat(newValue), OperationType.SET), null,
null, MODIFY_BATTERY_ERROR, "Battery '" + battery.getId() + "' : ");
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ public static void setNewValue(Generator generator, String generatorField, @NotN
ActivePowerControl<Generator> activePowerControl = generator.getExtension(ActivePowerControl.class);
ActivePowerControlAdder<Generator> activePowerControlAdder = generator.newExtension(ActivePowerControlAdder.class);
ModificationUtils.getInstance().modifyActivePowerControlAttributes(activePowerControl, activePowerControlAdder, null,
new AttributeModification<>(Float.parseFloat(newValue), OperationType.SET), null, null);
new AttributeModification<>(Float.parseFloat(newValue), OperationType.SET), null, null,
MODIFY_GENERATOR_ERROR, "Generator '" + generator.getId() + "' : ");
}
case TRANSIENT_REACTANCE -> modifyGeneratorShortCircuitAttributes(
new AttributeModification<>(Double.parseDouble(newValue), OperationType.SET),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.util.List;

import static org.gridsuite.modification.server.NetworkModificationException.Type.BATTERY_ALREADY_EXISTS;
import static org.gridsuite.modification.server.NetworkModificationException.Type.CREATE_BATTERY_ERROR;
import static org.gridsuite.modification.server.modifications.ModificationUtils.*;

/**
Expand All @@ -38,6 +39,7 @@ public void check(Network network) throws NetworkModificationException {
if (network.getBattery(modificationInfos.getEquipmentId()) != null) {
throw new NetworkModificationException(BATTERY_ALREADY_EXISTS, modificationInfos.getEquipmentId());
}
String errorMessage = "Battery '" + modificationInfos.getEquipmentId() + "' : ";

// check connectivity
ModificationUtils.getInstance()
Expand All @@ -49,6 +51,8 @@ public void check(Network network) throws NetworkModificationException {
modificationInfos.getErrorType(),
modificationInfos.getEquipmentId(),
"Battery");

ModificationUtils.getInstance().checkActivePowerControl(modificationInfos.getParticipate(), modificationInfos.getDroop(), CREATE_BATTERY_ERROR, errorMessage);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.util.Collection;
import java.util.List;

import static org.gridsuite.modification.server.NetworkModificationException.Type.CREATE_BATTERY_ERROR;
import static org.gridsuite.modification.server.NetworkModificationException.Type.MODIFY_BATTERY_ERROR;
import static org.gridsuite.modification.server.modifications.ModificationUtils.insertReportNode;

Expand Down Expand Up @@ -171,7 +172,8 @@ public static ReportNode modifyBatteryActivePowerControlAttributes(AttributeModi
ReportNode subReportNodeSetpoints) {
ActivePowerControl<Battery> activePowerControl = battery.getExtension(ActivePowerControl.class);
ActivePowerControlAdder<Battery> activePowerControlAdder = battery.newExtension(ActivePowerControlAdder.class);
return ModificationUtils.getInstance().modifyActivePowerControlAttributes(activePowerControl, activePowerControlAdder, participate, droop, subReportNode, subReportNodeSetpoints);
return ModificationUtils.getInstance().modifyActivePowerControlAttributes(activePowerControl, activePowerControlAdder,
participate, droop, subReportNode, subReportNodeSetpoints, CREATE_BATTERY_ERROR, "Battery '" + battery.getId() + "' : ");
}

private ReportNode modifyBatteryConnectivityAttributes(BatteryModificationInfos modificationInfos,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import java.util.ArrayList;
import java.util.List;

import static org.gridsuite.modification.server.NetworkModificationException.Type.GENERATOR_ALREADY_EXISTS;
import static org.gridsuite.modification.server.NetworkModificationException.Type.*;
import static org.gridsuite.modification.server.modifications.ModificationUtils.*;

/**
Expand All @@ -41,6 +41,7 @@ public void check(Network network) throws NetworkModificationException {
if (network.getGenerator(modificationInfos.getEquipmentId()) != null) {
throw new NetworkModificationException(GENERATOR_ALREADY_EXISTS, modificationInfos.getEquipmentId());
}
String errorMessage = "Generator '" + modificationInfos.getEquipmentId() + "' : ";

// check connectivity
ModificationUtils.getInstance().controlConnectivity(network, modificationInfos.getVoltageLevelId(),
Expand All @@ -58,6 +59,9 @@ public void check(Network network) throws NetworkModificationException {
modificationInfos.getRegulatingTerminalId(),
modificationInfos.getRegulatingTerminalType(),
modificationInfos.getRegulatingTerminalVlId());

ModificationUtils.getInstance().checkActivePowerControl(modificationInfos.getParticipate(),
modificationInfos.getDroop(), CREATE_GENERATOR_ERROR, errorMessage);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ public void check(Network network) throws NetworkModificationException {
modificationInfos.getRegulatingTerminalVlId().getValue());
}
checkActivePowerZeroOrBetweenMinAndMaxActivePowerGenerator(modificationInfos, generator, MODIFY_GENERATOR_ERROR, errorMessage);
checkActivePowerRegulation(modificationInfos, generator, MODIFY_GENERATOR_ERROR, errorMessage);
}

private void checkActivePowerZeroOrBetweenMinAndMaxActivePowerGenerator(GeneratorModificationInfos modificationInfos, Generator generator, NetworkModificationException.Type exceptionType, String errorMessage) {
Expand All @@ -71,6 +72,15 @@ private void checkActivePowerZeroOrBetweenMinAndMaxActivePowerGenerator(Generato
);
}

private void checkActivePowerRegulation(GeneratorModificationInfos modificationInfos, Generator generator, NetworkModificationException.Type exceptionType, String errorMessage) {
// ModificationUtils.getInstance().checkActivePowerControl(
// modificationInfos.getParticipate() != null ? modificationInfos.getParticipate().getValue() : null,
// modificationInfos.getDroop() != null ? modificationInfos.getDroop().getValue() : null,
// exceptionType,
// errorMessage
// );
}

@Override
public void apply(Network network, ReportNode subReportNode) {
Generator generator = ModificationUtils.getInstance().getGenerator(network, modificationInfos.getEquipmentId());
Expand Down Expand Up @@ -210,7 +220,9 @@ private ReportNode modifyGeneratorActivePowerControlAttributes(GeneratorModifica
Generator generator, ReportNode subReportNode, ReportNode subReportNodeSetpoints) {
ActivePowerControl<Generator> activePowerControl = generator.getExtension(ActivePowerControl.class);
ActivePowerControlAdder<Generator> activePowerControlAdder = generator.newExtension(ActivePowerControlAdder.class);
return ModificationUtils.getInstance().modifyActivePowerControlAttributes(activePowerControl, activePowerControlAdder, modificationInfos.getParticipate(), modificationInfos.getDroop(), subReportNode, subReportNodeSetpoints);
return ModificationUtils.getInstance().modifyActivePowerControlAttributes(activePowerControl, activePowerControlAdder,
modificationInfos.getParticipate(), modificationInfos.getDroop(), subReportNode, subReportNodeSetpoints,
MODIFY_GENERATOR_ERROR, "Generator '" + modificationInfos.getEquipmentId() + "' : ");
}

private void modifyGeneratorStartUpAttributes(GeneratorModificationInfos modificationInfos, Generator generator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1160,31 +1160,44 @@ private void modifyExistingActivePowerControl(ActivePowerControl<?> activePowerC
private void createNewActivePowerControl(ActivePowerControlAdder<?> adder,
AttributeModification<Boolean> participateInfo,
AttributeModification<Float> droopInfo,
List<ReportNode> reports) {
boolean participate = participateInfo != null ? participateInfo.getValue() : false;
adder.withParticipate(participate);
if (participateInfo != null && reports != null) {
reports.add(buildModificationReport(null, participate, "Participate"));
List<ReportNode> reports,
NetworkModificationException.Type exceptionType,
String errorMessage) {
Boolean participate = participateInfo == null ? null : participateInfo.getValue();
Float droop = droopInfo == null ? null : droopInfo.getValue();
checkActivePowerControl(participate, droop, exceptionType, errorMessage);
if (participate != null && droop != null) {
adder.withParticipate(participate);
if (reports != null) {
reports.add(buildModificationReport(null, participate, "Participate"));
}
adder.withDroop(droop);
if (reports != null) {
reports.add(buildModificationReport(Double.NaN, droop, "Droop"));
}
adder.add();
}
double droop = droopInfo != null ? droopInfo.getValue() : Double.NaN;
adder.withDroop(droop);
if (droopInfo != null && reports != null) {
reports.add(buildModificationReport(Double.NaN, droop, "Droop"));
}

public void checkActivePowerControl(Boolean participate, Float droop, NetworkModificationException.Type exceptionType, String errorMessage) {
if (Boolean.TRUE.equals(participate) && droop == null) {
throw new NetworkModificationException(exceptionType, errorMessage + "for creation if participate is true, droop can not be null");
}
adder.add();
}

public ReportNode modifyActivePowerControlAttributes(ActivePowerControl<?> activePowerControl,
ActivePowerControlAdder<?> activePowerControlAdder,
AttributeModification<Boolean> participateInfo,
AttributeModification<Float> droopInfo,
ReportNode subReportNode,
ReportNode subReporterSetpoints) {
ReportNode subReporterSetpoints,
NetworkModificationException.Type exceptionType,
String errorMessage) {
List<ReportNode> reports = new ArrayList<>();
if (activePowerControl != null) {
modifyExistingActivePowerControl(activePowerControl, participateInfo, droopInfo, reports);
} else {
createNewActivePowerControl(activePowerControlAdder, participateInfo, droopInfo, reports);
createNewActivePowerControl(activePowerControlAdder, participateInfo, droopInfo, reports, exceptionType, errorMessage);
}
if (subReportNode != null) {
ReportNode subReportNodeSetpoints2 = subReporterSetpoints;
Expand Down

0 comments on commit 0fab5a8

Please sign in to comment.