diff --git a/loadflow-api/src/main/java/eu/itesla_project/loadflow/api/LoadFlow.java b/loadflow-api/src/main/java/eu/itesla_project/loadflow/api/LoadFlow.java index 2dd62959..7773d273 100644 --- a/loadflow-api/src/main/java/eu/itesla_project/loadflow/api/LoadFlow.java +++ b/loadflow-api/src/main/java/eu/itesla_project/loadflow/api/LoadFlow.java @@ -20,9 +20,7 @@ public interface LoadFlow { LoadFlowResult run(LoadFlowParameters parameters) throws Exception; - default LoadFlowResult run() throws Exception { - return run(new LoadFlowParameters()); - } + LoadFlowResult run() throws Exception; default CompletableFuture runAsync(String workingStateId, LoadFlowParameters parameters) { throw new UnsupportedOperationException(); diff --git a/loadflow-api/src/main/java/eu/itesla_project/loadflow/api/LoadFlowParameters.java b/loadflow-api/src/main/java/eu/itesla_project/loadflow/api/LoadFlowParameters.java index 9c32d54f..041bdc82 100644 --- a/loadflow-api/src/main/java/eu/itesla_project/loadflow/api/LoadFlowParameters.java +++ b/loadflow-api/src/main/java/eu/itesla_project/loadflow/api/LoadFlowParameters.java @@ -6,17 +6,45 @@ */ package eu.itesla_project.loadflow.api; +import com.google.common.collect.ImmutableMap; +import eu.itesla_project.commons.io.ModuleConfig; +import eu.itesla_project.commons.io.PlatformConfig; + +import java.util.Map; +import java.util.Objects; + /** * @author Geoffroy Jamgotchian */ public class LoadFlowParameters { + private static final VoltageInitMode DEFAULT_VOLTAGE_INIT_MODE = VoltageInitMode.UNIFORM_VALUES; + private static final boolean DEFAULT_TRANSFORMER_VOLTAGE_CONTROL_ON = false; + private static final boolean DEFAULT_NO_GENERATOR_REACTIVE_LIMITS = false; + private static final boolean DEFAULT_PHASE_SHIFTER_REGULATION_ON = false; + public enum VoltageInitMode { UNIFORM_VALUES, // v=1pu, theta=0 PREVIOUS_VALUES, DC_VALUES // preprocessing to compute DC angles } + public static LoadFlowParameters load() { + LoadFlowParameters parameters = new LoadFlowParameters(); + load(parameters); + return parameters; + } + + protected static void load(LoadFlowParameters parameters) { + ModuleConfig config = PlatformConfig.defaultConfig().getModuleConfigIfExists("load-flow-default-parameters"); + if (config != null) { + parameters.setVoltageInitMode(config.getEnumProperty("voltageInitMode", VoltageInitMode.class, DEFAULT_VOLTAGE_INIT_MODE)); + parameters.setTransformerVoltageControlOn(config.getBooleanProperty("transformerVoltageControlOn", DEFAULT_TRANSFORMER_VOLTAGE_CONTROL_ON)); + parameters.setNoGeneratorReactiveLimits(config.getBooleanProperty("noGeneratorReactiveLimits", DEFAULT_NO_GENERATOR_REACTIVE_LIMITS)); + parameters.setPhaseShifterRegulationOn(config.getBooleanProperty("phaseShifterRegulationOn", DEFAULT_PHASE_SHIFTER_REGULATION_ON)); + } + } + private VoltageInitMode voltageInitMode; private boolean transformerVoltageControlOn; @@ -34,15 +62,15 @@ public LoadFlowParameters(VoltageInitMode voltageInitMode, boolean transformerVo } public LoadFlowParameters(VoltageInitMode voltageInitMode, boolean transformerVoltageControlOn) { - this(voltageInitMode, transformerVoltageControlOn, false, false); + this(voltageInitMode, transformerVoltageControlOn, DEFAULT_NO_GENERATOR_REACTIVE_LIMITS, DEFAULT_PHASE_SHIFTER_REGULATION_ON); } public LoadFlowParameters(VoltageInitMode voltageInitMode) { - this(voltageInitMode, false, false, false); + this(voltageInitMode, DEFAULT_TRANSFORMER_VOLTAGE_CONTROL_ON, DEFAULT_NO_GENERATOR_REACTIVE_LIMITS, DEFAULT_PHASE_SHIFTER_REGULATION_ON); } public LoadFlowParameters() { - this(VoltageInitMode.UNIFORM_VALUES, false, false, false); + this(DEFAULT_VOLTAGE_INIT_MODE, DEFAULT_TRANSFORMER_VOLTAGE_CONTROL_ON, DEFAULT_NO_GENERATOR_REACTIVE_LIMITS, DEFAULT_PHASE_SHIFTER_REGULATION_ON); } public VoltageInitMode getVoltageInitMode() { @@ -50,7 +78,7 @@ public VoltageInitMode getVoltageInitMode() { } public LoadFlowParameters setVoltageInitMode(VoltageInitMode voltageInitMode) { - this.voltageInitMode = voltageInitMode; + this.voltageInitMode = Objects.requireNonNull(voltageInitMode); return this; } @@ -80,4 +108,16 @@ public LoadFlowParameters setPhaseShifterRegulationOn(boolean phaseShifterRegula this.phaseShifterRegulationOn = phaseShifterRegulationOn; return this; } + + protected Map toMap() { + return ImmutableMap.of("voltageInitMode", voltageInitMode, + "transformerVoltageControlOn", transformerVoltageControlOn, + "noGeneratorReactiveLimits", noGeneratorReactiveLimits, + "phaseShifterRegulationOn", phaseShifterRegulationOn); + } + + @Override + public String toString() { + return toMap().toString(); + } } diff --git a/online-workflow/src/main/java/eu/itesla_project/online/modules/mock/LoadFlowMock.java b/online-workflow/src/main/java/eu/itesla_project/online/modules/mock/LoadFlowMock.java index 35b5d389..e92082f6 100644 --- a/online-workflow/src/main/java/eu/itesla_project/online/modules/mock/LoadFlowMock.java +++ b/online-workflow/src/main/java/eu/itesla_project/online/modules/mock/LoadFlowMock.java @@ -32,6 +32,11 @@ public String getVersion() { return null; } + @Override + public LoadFlowResult run() throws Exception { + return run(null); + } + @Override public LoadFlowResult run(LoadFlowParameters parameters) throws Exception { LOGGER.warn("Running loadflow mock");