SvcTestCaseFactory.java
/**
* Copyright (c) 2016, 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.iidm.network.test;
import com.powsybl.iidm.network.*;
import java.time.ZonedDateTime;
import java.util.Objects;
/**
* A very small network to test SVC modeling. 2 buses B1 and B2. A generator G1 regulating voltage is connected to B1.
* B1 and B2 are connected by a line with a high reactance to cause an important voltage drop.
* A SVC is connected to B2 to compensate the voltage drop.
*
* G1 L2
* | |
* B1 ---------------B2
* |
* SVC2
*
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
public final class SvcTestCaseFactory {
private SvcTestCaseFactory() {
}
public static Network create() {
return create(NetworkFactory.findDefault());
}
public static Network create(NetworkFactory networkFactory) {
Objects.requireNonNull(networkFactory);
Network network = networkFactory.createNetwork("svcTestCase", "code");
network.setCaseDate(ZonedDateTime.parse("2016-06-29T14:54:03.427+02:00"));
Substation s1 = network.newSubstation()
.setId("S1")
.setCountry(Country.FR)
.add();
VoltageLevel vl1 = s1.newVoltageLevel()
.setId("VL1")
.setNominalV(380)
.setTopologyKind(TopologyKind.BUS_BREAKER)
.add();
vl1.getBusBreakerView().newBus()
.setId("B1")
.add();
vl1.newGenerator()
.setId("G1")
.setConnectableBus("B1")
.setBus("B1")
.setVoltageRegulatorOn(true)
.setTargetP(100.0)
.setTargetV(400.0)
.setMinP(50.0)
.setMaxP(150.0)
.add();
Substation s2 = network.newSubstation()
.setId("S2")
.setCountry(Country.FR)
.add();
VoltageLevel vl2 = s2.newVoltageLevel()
.setId("VL2")
.setNominalV(380)
.setTopologyKind(TopologyKind.BUS_BREAKER)
.add();
vl2.getBusBreakerView().newBus()
.setId("B2")
.add();
vl2.newLoad()
.setId("L2")
.setConnectableBus("B2")
.setBus("B2")
.setP0(100.0)
.setQ0(50.0)
.add();
vl2.newStaticVarCompensator()
.setId("SVC2")
.setConnectableBus("B2")
.setBus("B2")
.setBmin(0.0002)
.setBmax(0.0008)
.setRegulationMode(StaticVarCompensator.RegulationMode.VOLTAGE)
.setVoltageSetpoint(390)
.add();
network.newLine()
.setId("L1")
.setVoltageLevel1("VL1")
.setConnectableBus1("B1")
.setBus1("B1")
.setVoltageLevel2("VL2")
.setConnectableBus2("B2")
.setBus2("B2")
.setR(4.0)
.setX(200.0)
.setG1(0.0)
.setB1(0.0)
.setG2(0.0)
.setB2(0.0)
.add();
return network;
}
public static Network createWithMoreSVCs() {
return createWithMoreSVCs(NetworkFactory.findDefault());
}
public static Network createWithMoreSVCs(NetworkFactory networkFactory) {
Network network = create(networkFactory);
network.getVoltageLevel("VL2").newStaticVarCompensator()
.setId("SVC3")
.setConnectableBus("B2")
.setBus("B2")
.setBmin(0.0002)
.setBmax(0.0008)
.setRegulationMode(StaticVarCompensator.RegulationMode.VOLTAGE)
.setVoltageSetpoint(390)
.setReactivePowerSetpoint(350)
.add();
return network;
}
public static Network createWithRemoteRegulatingTerminal() {
return createWithRemoteRegulatingTerminal(NetworkFactory.findDefault());
}
public static Network createWithRemoteRegulatingTerminal(NetworkFactory networkFactory) {
Network network = create(networkFactory);
network.getStaticVarCompensator("SVC2")
.setRegulatingTerminal(network.getLoad("L2").getTerminal());
return network;
}
private static Network addReactiveTarget(Network network) {
network.getStaticVarCompensator("SVC2")
.setReactivePowerSetpoint(350);
return network;
}
private static Network addVoltageTarget(Network network) {
network.getStaticVarCompensator("SVC2")
.setVoltageSetpoint(390);
return network;
}
private static Network addBothTarget(Network network) {
network.getStaticVarCompensator("SVC2")
.setReactivePowerSetpoint(350)
.setVoltageSetpoint(390);
return network;
}
private static Network createLocalVoltageControl(Network network) {
return addVoltageControl(network);
}
public static Network createLocalVoltageControl() {
return createLocalVoltageControl(create());
}
public static Network createRemoteVoltageControl() {
return createLocalVoltageControl(createWithRemoteRegulatingTerminal());
}
private static Network addVoltageControl(Network network) {
addVoltageTarget(network);
network.getStaticVarCompensator("SVC2")
.setRegulationMode(StaticVarCompensator.RegulationMode.VOLTAGE);
return network;
}
private static Network createReactiveControl(Network network) {
return addReactiveControl(network);
}
public static Network createLocalReactiveControl() {
return createReactiveControl(create());
}
public static Network createRemoteReactiveControl() {
return createReactiveControl(createWithRemoteRegulatingTerminal());
}
private static Network addReactiveControl(Network network) {
addReactiveTarget(network);
network.getStaticVarCompensator("SVC2")
.setRegulationMode(StaticVarCompensator.RegulationMode.REACTIVE_POWER);
return network;
}
public static Network createLocalOffReactiveTarget() {
return createOffReactiveTarget(create());
}
public static Network createRemoteOffReactiveTarget() {
return createOffReactiveTarget(createWithRemoteRegulatingTerminal());
}
private static Network createOffReactiveTarget(Network network) {
return addOffReactiveTarget(network);
}
private static Network addOffReactiveTarget(Network network) {
return addReactiveTarget(addOffNoTarget(network));
}
public static Network createLocalOffVoltageTarget() {
return createOffVoltageTarget(create());
}
public static Network createRemoteOffVoltageTarget() {
return createOffVoltageTarget(createWithRemoteRegulatingTerminal());
}
private static Network createOffVoltageTarget(Network network) {
return addOffVoltageTarget(network);
}
private static Network addOffVoltageTarget(Network network) {
return addVoltageTarget(addOffNoTarget(network));
}
public static Network createLocalOffBothTarget() {
return createOffBothTarget(create());
}
public static Network createRemoteOffBothTarget() {
return createOffBothTarget(createWithRemoteRegulatingTerminal());
}
private static Network createOffBothTarget(Network network) {
return addOffBothTarget(network);
}
private static Network addOffBothTarget(Network network) {
return addBothTarget(addOffNoTarget(network));
}
public static Network createLocalOffNoTarget() {
return addOffNoTarget(create());
}
public static Network createRemoteOffNoTarget() {
return addOffNoTarget(createWithRemoteRegulatingTerminal());
}
private static Network addOffNoTarget(Network network) {
network.getStaticVarCompensator("SVC2")
.setRegulationMode(StaticVarCompensator.RegulationMode.OFF)
.setVoltageSetpoint(Double.NaN)
.setReactivePowerSetpoint(Double.NaN);
return network;
}
}