Skip to content

Commit 13aa9a7

Browse files
Support HvdcAcEmulationLimits outer loop with parameter outerloopNames (#1467)
Signed-off-by: Sylvestre Prabakaran <sylvestre.prabakaran@rte-france.com>
1 parent e283692 commit 13aa9a7

11 files changed

Lines changed: 40 additions & 34 deletions

docs/loadflow/parameters.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -575,18 +575,20 @@ and then the `DistributedSlack` outerloop.
575575

576576
For AC load flow the supported outer loop names, their default execution order, and their corresponding high-level parameter, are:
577577
1. `DistributedSlack` / `AreaInterchangeControl` (parameters: [`distributedSlack`](inv:powsyblcore:*:*:#param-lf-distributed-slack) / [`areaInterchangeControl`](#areainterchangecontrol))
578-
2. `SecondaryVoltageControl` (parameter: [`secondaryVoltageControl`](#secondaryvoltagecontrol))
579-
3. `VoltageMonitoring` (parameter: [`svcVoltageMonitoring`](#svcvoltagemonitoring))
580-
4. `ReactiveLimits` (parameter: [`useReactiveLimits`](inv:powsyblcore:*:*:#param-lf-use-reactive-limits))
581-
5. `PhaseControl` / `IncrementalPhaseControl` (parameters: [`phaseShifterRegulationOn`](inv:powsyblcore:*:*:#param-lf-phase-shifter-regulation-on) and [`phaseShifterControlMode`](#phaseshiftercontrolmode))
582-
6. `SimpleTransformerVoltageControl` / `TransformerVoltageControl` / `IncrementalTransformerVoltageControl` (parameters: [`transformerVoltageControlOn`](inv:powsyblcore:*:*:#param-lf-transformer-voltage-control-on) and [`transformerVoltageControlMode`](#transformervoltagecontrolmode))
583-
7. `IncrementalTransformerReactivePowerControl` (parameter: [`transformerReactivePowerControl`](#transformerreactivepowercontrol))
584-
8. `ShuntVoltageControl` / `IncrementalShuntVoltageControl` (parameters: [`shuntCompensatorVoltageControlOn`](inv:powsyblcore:*:*:#param-lf-shunt-compensator-voltage-control-on) and [`shuntVoltageControlMode`](#shuntvoltagecontrolmode))
585-
9. `AutomationSystem` (parameter: [`simulateAutomationSystems`](#simulateautomationsystems))
578+
2. `HvdcAcEmulationLimits` (parameter: [`hvdcAcEmulation`](inv:powsyblcore:*:*:#param-lf-hvdc-ac-emulation))
579+
3. `SecondaryVoltageControl` (parameter: [`secondaryVoltageControl`](#secondaryvoltagecontrol))
580+
4. `VoltageMonitoring` (parameter: [`svcVoltageMonitoring`](#svcvoltagemonitoring))
581+
5. `ReactiveLimits` (parameter: [`useReactiveLimits`](inv:powsyblcore:*:*:#param-lf-use-reactive-limits))
582+
6. `PhaseControl` / `IncrementalPhaseControl` (parameters: [`phaseShifterRegulationOn`](inv:powsyblcore:*:*:#param-lf-phase-shifter-regulation-on) and [`phaseShifterControlMode`](#phaseshiftercontrolmode))
583+
7. `SimpleTransformerVoltageControl` / `TransformerVoltageControl` / `IncrementalTransformerVoltageControl` (parameters: [`transformerVoltageControlOn`](inv:powsyblcore:*:*:#param-lf-transformer-voltage-control-on) and [`transformerVoltageControlMode`](#transformervoltagecontrolmode))
584+
8. `IncrementalTransformerReactivePowerControl` (parameter: [`transformerReactivePowerControl`](#transformerreactivepowercontrol))
585+
9. `ShuntVoltageControl` / `IncrementalShuntVoltageControl` (parameters: [`shuntCompensatorVoltageControlOn`](inv:powsyblcore:*:*:#param-lf-shunt-compensator-voltage-control-on) and [`shuntVoltageControlMode`](#shuntvoltagecontrolmode))
586+
10. `AutomationSystem` (parameter: [`simulateAutomationSystems`](#simulateautomationsystems))
586587

587588
And for DC load flow:
588-
1. `IncrementalPhaseControl` (parameter: [`phaseShifterRegulationOn`](inv:powsyblcore:*:*:#param-lf-phase-shifter-regulation-on))
589-
2. `AreaInterchangeControl` (parameter: [`areaInterchangeControl`](#areainterchangecontrol))
589+
1. `HvdcAcEmulationLimits` (parameter: [`hvdcAcEmulation`](inv:powsyblcore:*:*:#param-lf-hvdc-ac-emulation))
590+
2. `IncrementalPhaseControl` (parameter: [`phaseShifterRegulationOn`](inv:powsyblcore:*:*:#param-lf-phase-shifter-regulation-on))
591+
3. `AreaInterchangeControl` (parameter: [`areaInterchangeControl`](#areainterchangecontrol))
590592

591593
(param-lf-line-per-unit-mode)=
592594
### linePerUnitMode

src/main/java/com/powsybl/openloadflow/ac/outerloop/AcHvdcAcEmulationLimitsOuterLoop.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,6 @@ public class AcHvdcAcEmulationLimitsOuterLoop
2929
implements AcOuterLoop {
3030

3131
private static final Logger LOGGER = LoggerFactory.getLogger(AcHvdcAcEmulationLimitsOuterLoop.class);
32-
public static final String NAME = "AcHvdcAcEmulationLimits";
33-
34-
@Override
35-
public String getName() {
36-
return NAME;
37-
}
3832

3933
@Override
4034
public OuterLoopResult check(AcOuterLoopContext context, ReportNode reportNode) {

src/main/java/com/powsybl/openloadflow/dc/DcHvdcAcEmulationLimitsOuterLoop.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,6 @@ public class DcHvdcAcEmulationLimitsOuterLoop
2626
implements DcOuterLoop {
2727

2828
private static final Logger LOGGER = LoggerFactory.getLogger(DcHvdcAcEmulationLimitsOuterLoop.class);
29-
public static final String NAME = "DcHvdcAcEmulationLimits";
30-
31-
@Override
32-
public String getName() {
33-
return NAME;
34-
}
3529

3630
@Override
3731
public OuterLoopResult check(DcOuterLoopContext context, ReportNode reportNode) {

src/main/java/com/powsybl/openloadflow/lf/outerloop/AbstractHvdcAcEmulationLimitsOuterLoop.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,15 @@ public abstract class AbstractHvdcAcEmulationLimitsOuterLoop<V extends Enum<V> &
2828
C extends LoadFlowContext<V, E, P>,
2929
O extends OuterLoopContext<V, E, P, C>> implements OuterLoop<V, E, P, C, O> {
3030

31+
public static final String NAME = "HvdcAcEmulationLimits";
32+
3133
protected AbstractHvdcAcEmulationLimitsOuterLoop() { }
3234

35+
@Override
36+
public String getName() {
37+
return NAME;
38+
}
39+
3340
protected static boolean checkAcEmulationMode(LfHvdc hvdc, boolean computeLoss, Logger logger, ReportNode reportNode) {
3441
LfHvdc.AcEmulationControl acEmulationControl = hvdc.getAcEmulationControl();
3542

src/main/java/com/powsybl/openloadflow/lf/outerloop/config/AbstractAcOuterLoopConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ protected static Optional<AcOuterLoop> createFreezingHvdcACEmulationOuterLoop(Op
5454
return Optional.empty();
5555
}
5656

57-
protected static Optional<AcOuterLoop> createAcHvdcAcEmulationLimitsOuterLoop(LoadFlowParameters parameters) {
57+
protected static Optional<AcOuterLoop> createHvdcAcEmulationLimitsOuterLoop(LoadFlowParameters parameters) {
5858
if (parameters.isHvdcAcEmulation()) {
5959
return Optional.of(new AcHvdcAcEmulationLimitsOuterLoop());
6060
}

src/main/java/com/powsybl/openloadflow/lf/outerloop/config/AbstractDcOuterLoopConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ protected static Optional<DcOuterLoop> createIncrementalPhaseControlOuterLoop(Lo
5252
return Optional.empty();
5353
}
5454

55-
protected static Optional<DcOuterLoop> createDcHvdcAcEmulationLimitsOuterLoop(LoadFlowParameters parameters) {
55+
protected static Optional<DcOuterLoop> createHvdcAcEmulationLimitsOuterLoop(LoadFlowParameters parameters) {
5656
if (parameters.isHvdcAcEmulation()) {
5757
return Optional.of(new DcHvdcAcEmulationLimitsOuterLoop());
5858
}

src/main/java/com/powsybl/openloadflow/lf/outerloop/config/DefaultAcOuterLoopConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public List<AcOuterLoop> configure(LoadFlowParameters parameters, OpenLoadFlowPa
3333
// freezing hvdc in AC emulation
3434
createFreezingHvdcACEmulationOuterLoop(parametersExt).ifPresent(outerLoops::add);
3535
// AC emulation
36-
createAcHvdcAcEmulationLimitsOuterLoop(parameters).ifPresent(outerLoops::add);
36+
createHvdcAcEmulationLimitsOuterLoop(parameters).ifPresent(outerLoops::add);
3737
// area interchange control
3838
createAreaInterchangeControlOuterLoop(parameters, parametersExt, loadFlowParametersOverride).ifPresent(outerLoops::add);
3939
// secondary voltage control

src/main/java/com/powsybl/openloadflow/lf/outerloop/config/DefaultDcOuterLoopConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public List<DcOuterLoop> configure(LoadFlowParameters parameters, OpenLoadFlowPa
2929
public List<DcOuterLoop> configure(LoadFlowParameters parameters, OpenLoadFlowParameters parametersExt, LoadFlowParametersOverride loadFlowParametersOverride) {
3030
List<DcOuterLoop> outerLoops = new ArrayList<>(2);
3131
// ac emulation
32-
createDcHvdcAcEmulationLimitsOuterLoop(parameters).ifPresent(outerLoops::add);
32+
createHvdcAcEmulationLimitsOuterLoop(parameters).ifPresent(outerLoops::add);
3333
// incremental phase control
3434
createIncrementalPhaseControlOuterLoop(parameters).ifPresent(outerLoops::add);
3535
// area interchange control

src/main/java/com/powsybl/openloadflow/lf/outerloop/config/ExplicitAcOuterLoopConfig.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.powsybl.openloadflow.OpenLoadFlowParameters;
1414
import com.powsybl.openloadflow.ac.outerloop.*;
1515
import com.powsybl.openloadflow.lf.outerloop.AbstractAreaInterchangeControlOuterLoop;
16+
import com.powsybl.openloadflow.lf.outerloop.AbstractHvdcAcEmulationLimitsOuterLoop;
1617
import com.powsybl.openloadflow.lf.outerloop.AbstractIncrementalPhaseControlOuterLoop;
1718
import com.powsybl.openloadflow.lf.outerloop.OuterLoop;
1819

@@ -41,7 +42,8 @@ public class ExplicitAcOuterLoopConfig extends AbstractAcOuterLoopConfig {
4142
AutomationSystemOuterLoop.NAME,
4243
IncrementalTransformerReactivePowerControlOuterLoop.NAME,
4344
AbstractAreaInterchangeControlOuterLoop.NAME,
44-
FreezingHvdcACEmulationOuterloop.NAME);
45+
FreezingHvdcACEmulationOuterloop.NAME,
46+
AbstractHvdcAcEmulationLimitsOuterLoop.NAME);
4547

4648
private static Optional<AcOuterLoop> createOuterLoop(String name, LoadFlowParameters parameters, OpenLoadFlowParameters parametersExt, LoadFlowParametersOverride loadFlowParametersOverride) {
4749
return switch (name) {
@@ -78,6 +80,7 @@ private static Optional<AcOuterLoop> createOuterLoop(String name, LoadFlowParame
7880
case IncrementalTransformerReactivePowerControlOuterLoop.NAME -> createTransformerReactivePowerControlOuterLoop(parametersExt);
7981
case AbstractAreaInterchangeControlOuterLoop.NAME -> createAreaInterchangeControlOuterLoop(parameters, parametersExt, loadFlowParametersOverride);
8082
case FreezingHvdcACEmulationOuterloop.NAME -> createFreezingHvdcACEmulationOuterLoop(parametersExt);
83+
case AbstractHvdcAcEmulationLimitsOuterLoop.NAME -> createHvdcAcEmulationLimitsOuterLoop(parameters);
8184
default -> throw new PowsyblException("Unknown outer loop '" + name + "' for AC load flow");
8285
};
8386
}

src/main/java/com/powsybl/openloadflow/lf/outerloop/config/ExplicitDcOuterLoopConfig.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.powsybl.openloadflow.OpenLoadFlowParameters;
1414
import com.powsybl.openloadflow.dc.DcOuterLoop;
1515
import com.powsybl.openloadflow.lf.outerloop.AbstractAreaInterchangeControlOuterLoop;
16+
import com.powsybl.openloadflow.lf.outerloop.AbstractHvdcAcEmulationLimitsOuterLoop;
1617
import com.powsybl.openloadflow.lf.outerloop.AbstractIncrementalPhaseControlOuterLoop;
1718

1819
import java.util.List;
@@ -25,12 +26,14 @@
2526
public class ExplicitDcOuterLoopConfig extends AbstractDcOuterLoopConfig {
2627

2728
public static final List<String> NAMES = List.of(AbstractIncrementalPhaseControlOuterLoop.NAME,
28-
AbstractAreaInterchangeControlOuterLoop.NAME);
29+
AbstractAreaInterchangeControlOuterLoop.NAME,
30+
AbstractHvdcAcEmulationLimitsOuterLoop.NAME);
2931

3032
private static Optional<DcOuterLoop> createOuterLoop(String name, LoadFlowParameters parameters, OpenLoadFlowParameters parametersExt, LoadFlowParametersOverride loadFlowParametersOverride) {
3133
return switch (name) {
3234
case AbstractIncrementalPhaseControlOuterLoop.NAME -> createIncrementalPhaseControlOuterLoop(parameters);
3335
case AbstractAreaInterchangeControlOuterLoop.NAME -> createAreaInterchangeControlOuterLoop(parameters, parametersExt, loadFlowParametersOverride);
36+
case AbstractHvdcAcEmulationLimitsOuterLoop.NAME -> createHvdcAcEmulationLimitsOuterLoop(parameters);
3437
default -> throw new PowsyblException("Unknown outer loop '" + name + "' for DC load flow");
3538
};
3639
}

0 commit comments

Comments
 (0)