Skip to content

Commit

Permalink
Load default parameters from platform config
Browse files Browse the repository at this point in the history
  • Loading branch information
geofjamg committed Sep 21, 2016
1 parent 5278cca commit a26adba
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 7 deletions.
Expand Up @@ -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<LoadFlowResult> runAsync(String workingStateId, LoadFlowParameters parameters) {
throw new UnsupportedOperationException();
Expand Down
Expand Up @@ -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 <geoffroy.jamgotchian at rte-france.com>
*/
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;
Expand All @@ -34,23 +62,23 @@ 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() {
return voltageInitMode;
}

public LoadFlowParameters setVoltageInitMode(VoltageInitMode voltageInitMode) {
this.voltageInitMode = voltageInitMode;
this.voltageInitMode = Objects.requireNonNull(voltageInitMode);
return this;
}

Expand Down Expand Up @@ -80,4 +108,16 @@ public LoadFlowParameters setPhaseShifterRegulationOn(boolean phaseShifterRegula
this.phaseShifterRegulationOn = phaseShifterRegulationOn;
return this;
}

protected Map<String, Object> toMap() {
return ImmutableMap.of("voltageInitMode", voltageInitMode,
"transformerVoltageControlOn", transformerVoltageControlOn,
"noGeneratorReactiveLimits", noGeneratorReactiveLimits,
"phaseShifterRegulationOn", phaseShifterRegulationOn);
}

@Override
public String toString() {
return toMap().toString();
}
}
Expand Up @@ -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");
Expand Down

0 comments on commit a26adba

Please sign in to comment.