Skip to content

Commit

Permalink
cache outerloop config supplier
Browse files Browse the repository at this point in the history
Signed-off-by: vmouradian <valentin.mouradian@artelys.com>
  • Loading branch information
vmouradian committed Jan 31, 2025
1 parent bb06c5e commit d676d7e
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
import com.powsybl.openloadflow.dc.equations.DcEquationSystemCreationParameters;
import com.powsybl.openloadflow.graph.GraphConnectivityFactory;
import com.powsybl.openloadflow.lf.AbstractLoadFlowParameters;
import com.powsybl.openloadflow.lf.outerloop.config.AbstractAcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.AbstractDcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.AcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.DcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.DefaultAcOuterLoopConfig;
Expand Down Expand Up @@ -1824,14 +1826,14 @@ public static AcLoadFlowParameters createAcParameters(Network network, LoadFlowP
}

static List<AcOuterLoop> createAcOuterLoops(LoadFlowParameters parameters, OpenLoadFlowParameters parametersExt) {
AcOuterLoopConfig outerLoopConfig = AcOuterLoopConfig.findOuterLoopConfig()
AcOuterLoopConfig outerLoopConfig = AbstractAcOuterLoopConfig.getOuterLoopConfig()
.orElseGet(() -> parametersExt.getOuterLoopNames() != null ? new ExplicitAcOuterLoopConfig()
: new DefaultAcOuterLoopConfig());
return outerLoopConfig.configure(parameters, parametersExt);
}

static List<DcOuterLoop> createDcOuterLoops(LoadFlowParameters parameters, OpenLoadFlowParameters parametersExt) {
DcOuterLoopConfig outerLoopConfig = DcOuterLoopConfig.findOuterLoopConfig()
DcOuterLoopConfig outerLoopConfig = AbstractDcOuterLoopConfig.getOuterLoopConfig()
.orElseGet(() -> parametersExt.getOuterLoopNames() != null ? new ExplicitDcOuterLoopConfig()
: new DefaultDcOuterLoopConfig());
return outerLoopConfig.configure(parameters, parametersExt);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*/
package com.powsybl.openloadflow.lf.outerloop.config;

import com.google.common.base.Suppliers;
import com.powsybl.loadflow.LoadFlowParameters;
import com.powsybl.openloadflow.OpenLoadFlowParameters;
import com.powsybl.openloadflow.ac.outerloop.*;
Expand All @@ -17,6 +18,7 @@

import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;

/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
Expand All @@ -25,9 +27,15 @@ public abstract class AbstractAcOuterLoopConfig implements AcOuterLoopConfig {

private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAcOuterLoopConfig.class);

private static final Supplier<Optional<AcOuterLoopConfig>> CONFIG_SUPPLIER = Suppliers.memoize(AcOuterLoopConfig::findOuterLoopConfig);

protected AbstractAcOuterLoopConfig() {
}

public static Optional<AcOuterLoopConfig> getOuterLoopConfig() {
return CONFIG_SUPPLIER.get();
}

protected static Optional<AcOuterLoop> createDistributedSlackOuterLoop(LoadFlowParameters parameters, OpenLoadFlowParameters parametersExt, ContingencyLoadFlowParameters contingencyParameters) {
if (contingencyParameters.isDistributedSlack(parameters)) {
return Optional.of(DistributedSlackOuterLoop.create(contingencyParameters.getBalanceType(parameters), parametersExt.isLoadPowerFactorConstant(), parametersExt.isUseActiveLimits(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*/
package com.powsybl.openloadflow.lf.outerloop.config;

import com.google.common.base.Suppliers;
import com.powsybl.loadflow.LoadFlowParameters;
import com.powsybl.openloadflow.OpenLoadFlowParameters;
import com.powsybl.openloadflow.dc.DcAreaInterchangeControlOuterLoop;
Expand All @@ -16,15 +17,22 @@
import com.powsybl.openloadflow.sa.extensions.ContingencyLoadFlowParameters;

import java.util.Optional;
import java.util.function.Supplier;

/**
* @author Valentin Mouradian {@literal <valentin.mouradian at artelys.com>}
*/
abstract class AbstractDcOuterLoopConfig implements DcOuterLoopConfig {
public abstract class AbstractDcOuterLoopConfig implements DcOuterLoopConfig {

public static final Supplier<Optional<DcOuterLoopConfig>> CONFIG_SUPPLIER = Suppliers.memoize(DcOuterLoopConfig::findOuterLoopConfig);

protected AbstractDcOuterLoopConfig() {
}

public static Optional<DcOuterLoopConfig> getOuterLoopConfig() {
return CONFIG_SUPPLIER.get();
}

protected static Optional<DcOuterLoop> createAreaInterchangeControlOuterLoop(LoadFlowParameters parameters, OpenLoadFlowParameters parametersExt, ContingencyLoadFlowParameters contingencyParameters) {
if (contingencyParameters.isAreaInterchangeControl(parametersExt)) {
ActivePowerDistribution activePowerDistribution = ActivePowerDistribution.create(contingencyParameters.getBalanceType(parameters), parametersExt.isLoadPowerFactorConstant(), parametersExt.isUseActiveLimits());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.powsybl.openloadflow.ac.outerloop.AcOuterLoop;
import com.powsybl.openloadflow.graph.GraphConnectivityFactory;
import com.powsybl.openloadflow.lf.outerloop.OuterLoopStatus;
import com.powsybl.openloadflow.lf.outerloop.config.AbstractAcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.AcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.DefaultAcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.ExplicitAcOuterLoopConfig;
Expand Down Expand Up @@ -127,7 +128,7 @@ protected Consumer<AcLoadFlowParameters> createParametersResetter(AcLoadFlowPara

@Override
protected void applyContingencyParameters(AcLoadFlowParameters parameters, ContingencyLoadFlowParameters contingencyParameters, LoadFlowParameters loadFlowParameters, OpenLoadFlowParameters openLoadFlowParameters) {
AcOuterLoopConfig outerLoopConfig = AcOuterLoopConfig.findOuterLoopConfig()
AcOuterLoopConfig outerLoopConfig = AbstractAcOuterLoopConfig.getOuterLoopConfig()
.orElseGet(() -> contingencyParameters.getOuterLoopNames().isPresent() ? new ExplicitAcOuterLoopConfig()
: new DefaultAcOuterLoopConfig());
parameters.setOuterLoops(outerLoopConfig.configure(loadFlowParameters, openLoadFlowParameters, contingencyParameters));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.powsybl.openloadflow.dc.equations.DcEquationType;
import com.powsybl.openloadflow.dc.equations.DcVariableType;
import com.powsybl.openloadflow.graph.GraphConnectivityFactory;
import com.powsybl.openloadflow.lf.outerloop.config.AbstractDcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.DcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.DefaultDcOuterLoopConfig;
import com.powsybl.openloadflow.lf.outerloop.config.ExplicitDcOuterLoopConfig;
Expand Down Expand Up @@ -90,7 +91,7 @@ protected Consumer<DcLoadFlowParameters> createParametersResetter(DcLoadFlowPara

@Override
protected void applyContingencyParameters(DcLoadFlowParameters parameters, ContingencyLoadFlowParameters contingencyParameters, LoadFlowParameters loadFlowParameters, OpenLoadFlowParameters openLoadFlowParameters) {
DcOuterLoopConfig outerLoopConfig = DcOuterLoopConfig.findOuterLoopConfig()
DcOuterLoopConfig outerLoopConfig = AbstractDcOuterLoopConfig.getOuterLoopConfig()
.orElseGet(() -> contingencyParameters.getOuterLoopNames().isPresent() ? new ExplicitDcOuterLoopConfig()
: new DefaultDcOuterLoopConfig());
parameters.setOuterLoops(outerLoopConfig.configure(loadFlowParameters, openLoadFlowParameters, contingencyParameters));
Expand Down

0 comments on commit d676d7e

Please sign in to comment.