CustomGlskProviderTests.java
/*
* Copyright (c) 2023, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.flow_decomposition;
import com.powsybl.flow_decomposition.glsk_provider.AutoGlskProvider;
import com.powsybl.flow_decomposition.xnec_provider.XnecProviderByIds;
import com.powsybl.iidm.network.Country;
import com.powsybl.iidm.network.Network;
import org.junit.jupiter.api.Test;
import java.util.Map;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* @author Sebastien Murgey {@literal <sebastien.murgey at rte-france.com>}
*/
class CustomGlskProviderTests {
private static final String NETWORK_FILE_FOR_CUSTOM_GLSK_TEST = "customGlskProviderTestNetwork.uct";
private static final String NETWORK_ELEMENT_DECOMPOSED = "FGEN2 11 FINTER11 1";
private static final double EPSILON = 1e-3;
@Test
void checkThatDefaultGlskProviderIsAutoCountryGlsk() {
FlowDecompositionComputer computer = new FlowDecompositionComputer();
XnecProvider xnecProvider = XnecProviderByIds.builder()
.addNetworkElementsOnBasecase(Set.of(NETWORK_ELEMENT_DECOMPOSED))
.build();
Network network = TestUtils.importNetwork(NETWORK_FILE_FOR_CUSTOM_GLSK_TEST);
FlowDecompositionResults results = computer.run(xnecProvider, network);
assertEquals(0., results.getDecomposedFlowMap().get(NETWORK_ELEMENT_DECOMPOSED).getAllocatedFlow(), EPSILON);
}
@Test
void checkThatDefaultGlskProviderCanBeProvided() {
FlowDecompositionComputer computer = new FlowDecompositionComputer();
XnecProvider xnecProvider = XnecProviderByIds.builder()
.addNetworkElementsOnBasecase(Set.of(NETWORK_ELEMENT_DECOMPOSED))
.build();
GlskProvider glskProvider = new AutoGlskProvider();
Network network = TestUtils.importNetwork(NETWORK_FILE_FOR_CUSTOM_GLSK_TEST);
FlowDecompositionResults results = computer.run(xnecProvider, glskProvider, network);
assertEquals(0., results.getDecomposedFlowMap().get(NETWORK_ELEMENT_DECOMPOSED).getAllocatedFlow(), EPSILON);
}
@Test
void checkThatOtherGlskProviderGivesOtherCorrectResults() {
FlowDecompositionComputer computer = new FlowDecompositionComputer();
XnecProvider xnecProvider = XnecProviderByIds.builder()
.addNetworkElementsOnBasecase(Set.of(NETWORK_ELEMENT_DECOMPOSED))
.build();
GlskProvider glskProvider = network -> Map.of(Country.FR, Map.of("FGEN2 11_generator", 1.0),
Country.BE, Map.of("BGEN 11_generator", 1.0));
Network network = TestUtils.importNetwork(NETWORK_FILE_FOR_CUSTOM_GLSK_TEST);
FlowDecompositionResults results = computer.run(xnecProvider, glskProvider, network);
assertEquals(-100., results.getDecomposedFlowMap().get(NETWORK_ELEMENT_DECOMPOSED).getAllocatedFlow(), EPSILON);
}
@Test
void checkThatLskInGlskProviderGivesOtherCorrectResults() {
FlowDecompositionComputer computer = new FlowDecompositionComputer();
XnecProvider xnecProvider = XnecProviderByIds.builder()
.addNetworkElementsOnBasecase(Set.of(NETWORK_ELEMENT_DECOMPOSED))
.build();
GlskProvider glskProvider = network -> Map.of(Country.FR, Map.of("FGEN2 11_load", 1.0),
Country.BE, Map.of("BGEN 11_generator", 1.0));
Network network = TestUtils.importNetwork(NETWORK_FILE_FOR_CUSTOM_GLSK_TEST);
FlowDecompositionResults results = computer.run(xnecProvider, glskProvider, network);
assertEquals(-100., results.getDecomposedFlowMap().get(NETWORK_ELEMENT_DECOMPOSED).getAllocatedFlow(), EPSILON);
}
}