@@ -147,6 +147,8 @@ public enum FictitiousGeneratorVoltageControlCheckMode {
147
147
148
148
public static final boolean FORCE_TARGET_Q_IN_REACTIVE_LIMITS_DEFAULT_VALUE = false ;
149
149
150
+ public static final boolean REMOTE_VOLTAGE_CONTROL_IGNORE_QPERCENT_DEFAULT_VALUE = false ;
151
+
150
152
public static final String SLACK_BUS_SELECTION_MODE_PARAM_NAME = "slackBusSelectionMode" ;
151
153
152
154
public static final String SLACK_BUSES_IDS_PARAM_NAME = "slackBusesIds" ;
@@ -295,6 +297,8 @@ public enum FictitiousGeneratorVoltageControlCheckMode {
295
297
296
298
public static final String DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_PARAM_NAME = "disableInconsistentVoltageControls" ;
297
299
300
+ public static final String REMOTE_VOLTAGE_CONTROL_IGNORE_QPERCENT_PARAM_NAME = "remoteVoltageControlIgnoreQPercent" ;
301
+
298
302
public static <E extends Enum <E >> List <Object > getEnumPossibleValues (Class <E > enumClass ) {
299
303
return EnumSet .allOf (enumClass ).stream ().map (Enum ::name ).collect (Collectors .toList ());
300
304
}
@@ -439,7 +443,8 @@ public static List<Object> getAcSolverTypePossibleValues() {
439
443
new Parameter (AREA_INTERCHANGE_P_MAX_MISMATCH_PARAM_NAME , ParameterType .DOUBLE , "Area interchange max active power mismatch" , AREA_INTERCHANGE_P_MAX_MISMATCH_DEFAULT_VALUE , ParameterScope .FUNCTIONAL , SLACK_DISTRIBUTION_CATEGORY_KEY ),
440
444
new Parameter (VOLTAGE_REMOTE_CONTROL_ROBUST_MODE_PARAM_NAME , ParameterType .BOOLEAN , "Generator voltage remote control robust mode" , VOLTAGE_REMOTE_CONTROL_ROBUST_MODE_DEFAULT_VALUE , ParameterScope .FUNCTIONAL , GENERATOR_VOLTAGE_CONTROL_CATEGORY_KEY ),
441
445
new Parameter (FORCE_TARGET_Q_IN_REACTIVE_LIMITS_PARAM_NAME , ParameterType .BOOLEAN , "Force targetQ in the reactive limit diagram" , FORCE_TARGET_Q_IN_REACTIVE_LIMITS_DEFAULT_VALUE , ParameterScope .FUNCTIONAL , REACTIVE_POWER_CONTROL_CATEGORY_KEY ),
442
- new Parameter (DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_PARAM_NAME , ParameterType .BOOLEAN , "Disable inconsistent voltage controls" , LfNetworkParameters .DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_DEFAULT_VALUE , ParameterScope .FUNCTIONAL , GENERATOR_VOLTAGE_CONTROL_CATEGORY_KEY )
446
+ new Parameter (DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_PARAM_NAME , ParameterType .BOOLEAN , "Disable inconsistent voltage controls" , LfNetworkParameters .DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_DEFAULT_VALUE , ParameterScope .FUNCTIONAL , GENERATOR_VOLTAGE_CONTROL_CATEGORY_KEY ),
447
+ new Parameter (REMOTE_VOLTAGE_CONTROL_IGNORE_QPERCENT_PARAM_NAME , ParameterType .BOOLEAN , "Ignore qPercent for remote voltage control and use reactive power range as key instead" , REMOTE_VOLTAGE_CONTROL_IGNORE_QPERCENT_DEFAULT_VALUE , ParameterScope .FUNCTIONAL , VOLTAGE_CONTROLS_CATEGORY_KEY )
443
448
);
444
449
445
450
public enum VoltageInitModeOverride {
@@ -629,6 +634,8 @@ public enum ReactiveRangeCheckMode {
629
634
630
635
private boolean disableInconsistentVoltageControls = LfNetworkParameters .DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_DEFAULT_VALUE ;
631
636
637
+ private boolean remoteVoltageControlIgnoreQpercent = REMOTE_VOLTAGE_CONTROL_IGNORE_QPERCENT_DEFAULT_VALUE ;
638
+
632
639
public static double checkParameterValue (double parameterValue , boolean condition , String parameterName ) {
633
640
if (!condition ) {
634
641
throw new IllegalArgumentException ("Invalid value for parameter " + parameterName + ": " + parameterValue );
@@ -1381,6 +1388,15 @@ public OpenLoadFlowParameters setDisableInconsistentVoltageControls(boolean disa
1381
1388
return this ;
1382
1389
}
1383
1390
1391
+ public boolean isRemoteVoltageControlIgnoreQpercent () {
1392
+ return remoteVoltageControlIgnoreQpercent ;
1393
+ }
1394
+
1395
+ public OpenLoadFlowParameters setRemoteVoltageControlIgnoreQpercent (boolean remoteVoltageControlIgnoreQpercent ) {
1396
+ this .remoteVoltageControlIgnoreQpercent = remoteVoltageControlIgnoreQpercent ;
1397
+ return this ;
1398
+ }
1399
+
1384
1400
public static OpenLoadFlowParameters load () {
1385
1401
return load (PlatformConfig .defaultConfig ());
1386
1402
}
@@ -1460,7 +1476,8 @@ public static OpenLoadFlowParameters load(PlatformConfig platformConfig) {
1460
1476
.setAreaInterchangeControl (config .getBooleanProperty (AREA_INTERCHANGE_CONTROL_PARAM_NAME , AREA_INTERCHANGE_CONTROL_DEFAULT_VALUE ))
1461
1477
.setAreaInterchangeControlAreaType (config .getStringProperty (AREA_INTERCHANGE_CONTROL_AREA_TYPE_PARAM_NAME , LfNetworkParameters .AREA_INTERCHANGE_CONTROL_AREA_TYPE_DEFAULT_VALUE ))
1462
1478
.setAreaInterchangePMaxMismatch (config .getDoubleProperty (AREA_INTERCHANGE_P_MAX_MISMATCH_PARAM_NAME , AREA_INTERCHANGE_P_MAX_MISMATCH_DEFAULT_VALUE ))
1463
- .setDisableInconsistentVoltageControls (config .getBooleanProperty (DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_PARAM_NAME , LfNetworkParameters .DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_DEFAULT_VALUE )));
1479
+ .setDisableInconsistentVoltageControls (config .getBooleanProperty (DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_PARAM_NAME , LfNetworkParameters .DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_DEFAULT_VALUE ))
1480
+ .setRemoteVoltageControlIgnoreQpercent (config .getBooleanProperty (REMOTE_VOLTAGE_CONTROL_IGNORE_QPERCENT_PARAM_NAME , REMOTE_VOLTAGE_CONTROL_IGNORE_QPERCENT_DEFAULT_VALUE )));
1464
1481
return parameters ;
1465
1482
}
1466
1483
@@ -1627,6 +1644,8 @@ public OpenLoadFlowParameters update(Map<String, String> properties) {
1627
1644
.ifPresent (prop -> this .setForceTargetQInReactiveLimits (Boolean .parseBoolean (prop )));
1628
1645
Optional .ofNullable (properties .get (DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_PARAM_NAME ))
1629
1646
.ifPresent (prop -> this .setDisableInconsistentVoltageControls (Boolean .parseBoolean (prop )));
1647
+ Optional .ofNullable (properties .get (REMOTE_VOLTAGE_CONTROL_IGNORE_QPERCENT_PARAM_NAME ))
1648
+ .ifPresent (prop -> this .setRemoteVoltageControlIgnoreQpercent (Boolean .parseBoolean (prop )));
1630
1649
return this ;
1631
1650
}
1632
1651
@@ -1706,6 +1725,7 @@ public Map<String, Object> toMap() {
1706
1725
map .put (VOLTAGE_REMOTE_CONTROL_ROBUST_MODE_PARAM_NAME , voltageRemoteControlRobustMode );
1707
1726
map .put (FORCE_TARGET_Q_IN_REACTIVE_LIMITS_PARAM_NAME , forceTargetQInReactiveLimits );
1708
1727
map .put (DISABLE_INCONSISTENT_VOLTAGE_CONTROLS_PARAM_NAME , disableInconsistentVoltageControls );
1728
+ map .put (REMOTE_VOLTAGE_CONTROL_IGNORE_QPERCENT_PARAM_NAME , remoteVoltageControlIgnoreQpercent );
1709
1729
return map ;
1710
1730
}
1711
1731
@@ -1864,7 +1884,8 @@ static LfNetworkParameters getNetworkParameters(LoadFlowParameters parameters, O
1864
1884
.setAreaInterchangeControl (parametersExt .isAreaInterchangeControl ())
1865
1885
.setAreaInterchangeControlAreaType (parametersExt .getAreaInterchangeControlAreaType ())
1866
1886
.setForceTargetQInReactiveLimits (parametersExt .isForceTargetQInReactiveLimits ())
1867
- .setDisableInconsistentVoltageControls (parametersExt .isDisableInconsistentVoltageControls ());
1887
+ .setDisableInconsistentVoltageControls (parametersExt .isDisableInconsistentVoltageControls ())
1888
+ .setRemoteVoltageControlIgnoreQPercent (parametersExt .isRemoteVoltageControlIgnoreQpercent ());
1868
1889
}
1869
1890
1870
1891
public static AcLoadFlowParameters createAcParameters (Network network , LoadFlowParameters parameters , OpenLoadFlowParameters parametersExt ,
@@ -1974,7 +1995,8 @@ public static DcLoadFlowParameters createDcParameters(LoadFlowParameters paramet
1974
1995
.setReferenceBusSelector (ReferenceBusSelector .fromMode (parametersExt .getReferenceBusSelectionMode ()))
1975
1996
.setAreaInterchangeControl (parametersExt .isAreaInterchangeControl ())
1976
1997
.setAreaInterchangeControlAreaType (parametersExt .getAreaInterchangeControlAreaType ())
1977
- .setDisableInconsistentVoltageControls (parametersExt .isDisableInconsistentVoltageControls ());
1998
+ .setDisableInconsistentVoltageControls (parametersExt .isDisableInconsistentVoltageControls ())
1999
+ .setRemoteVoltageControlIgnoreQPercent (parametersExt .isRemoteVoltageControlIgnoreQpercent ());
1978
2000
1979
2001
var equationSystemCreationParameters = new DcEquationSystemCreationParameters ()
1980
2002
.setUpdateFlows (true )
@@ -2105,7 +2127,8 @@ public static boolean equals(LoadFlowParameters parameters1, LoadFlowParameters
2105
2127
extension1 .getAreaInterchangePMaxMismatch () == extension2 .getAreaInterchangePMaxMismatch () &&
2106
2128
extension1 .isVoltageRemoteControlRobustMode () == extension2 .isVoltageRemoteControlRobustMode () &&
2107
2129
extension1 .isForceTargetQInReactiveLimits () == extension2 .isForceTargetQInReactiveLimits () &&
2108
- extension1 .isDisableInconsistentVoltageControls () == extension2 .isDisableInconsistentVoltageControls ();
2130
+ extension1 .isDisableInconsistentVoltageControls () == extension2 .isDisableInconsistentVoltageControls () &&
2131
+ extension1 .isRemoteVoltageControlIgnoreQpercent () == extension2 .isRemoteVoltageControlIgnoreQpercent ();
2109
2132
}
2110
2133
2111
2134
public static LoadFlowParameters clone (LoadFlowParameters parameters ) {
@@ -2204,7 +2227,8 @@ public static LoadFlowParameters clone(LoadFlowParameters parameters) {
2204
2227
.setAreaInterchangePMaxMismatch (extension .getAreaInterchangePMaxMismatch ())
2205
2228
.setVoltageRemoteControlRobustMode (extension .isVoltageRemoteControlRobustMode ())
2206
2229
.setForceTargetQInReactiveLimits (extension .isForceTargetQInReactiveLimits ())
2207
- .setDisableInconsistentVoltageControls (extension .isDisableInconsistentVoltageControls ());
2230
+ .setDisableInconsistentVoltageControls (extension .isDisableInconsistentVoltageControls ())
2231
+ .setRemoteVoltageControlIgnoreQpercent (extension .isRemoteVoltageControlIgnoreQpercent ());
2208
2232
2209
2233
if (extension2 != null ) {
2210
2234
parameters2 .addExtension (OpenLoadFlowParameters .class , extension2 );
0 commit comments