Skip to content

Commit

Permalink
Fix BoundaryImpl getters when generation not null (#2960)
Browse files Browse the repository at this point in the history
Signed-off-by: Anne Tilloy <[email protected]>
  • Loading branch information
annetill authored Mar 29, 2024
1 parent 2c6677e commit b1d5473
Show file tree
Hide file tree
Showing 14 changed files with 50 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public DanglingLineBoundaryImpl(DanglingLine parent) {

@Override
public double getV() {
if (!parent.isPaired() && valid(parent.getP0(), parent.getQ0())) {
if (useHypothesis(parent)) {
DanglingLineData danglingLineData = new DanglingLineData(parent, true);
return danglingLineData.getBoundaryBusU();
}
Expand All @@ -38,7 +38,7 @@ public double getV() {

@Override
public double getAngle() {
if (!parent.isPaired() && valid(parent.getP0(), parent.getQ0())) {
if (useHypothesis(parent)) {
DanglingLineData danglingLineData = new DanglingLineData(parent, true);
return Math.toDegrees(danglingLineData.getBoundaryBusTheta());
}
Expand All @@ -49,7 +49,7 @@ public double getAngle() {

@Override
public double getP() {
if (!parent.isPaired() && valid(parent.getP0(), parent.getQ0())) {
if (useHypothesis(parent)) {
return -parent.getP0();
}
Terminal t = parent.getTerminal();
Expand All @@ -59,7 +59,7 @@ public double getP() {

@Override
public double getQ() {
if (!parent.isPaired() && valid(parent.getP0(), parent.getQ0())) {
if (useHypothesis(parent)) {
return -parent.getQ0();
}
Terminal t = parent.getTerminal();
Expand Down Expand Up @@ -88,4 +88,12 @@ private static double getAngle(Bus b) {
private static boolean valid(double p0, double q0) {
return !Double.isNaN(p0) && !Double.isNaN(q0);
}

private static boolean useHypothesis(DanglingLine parent) {
// We prefer to use P0 and Q0 if the dangling line is not paired and P0 and Q0 are valid, but we cannot retrieve
// P, Q, angle and voltage at boundary if the dangling line has a generation part: a previous global load flow
// run is needed, especially if the generation is regulating voltage.
// This could be improved later.
return !parent.isPaired() && valid(parent.getP0(), parent.getQ0()) && parent.getGeneration() == null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
package com.powsybl.iidm.network.impl.util;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import com.powsybl.iidm.network.*;
import com.powsybl.iidm.network.test.DanglingLineNetworkFactory;
import org.junit.jupiter.api.Test;

import com.powsybl.iidm.network.util.SV;
Expand Down Expand Up @@ -249,4 +251,28 @@ private static void createDanglingLine(Network network, String vlId, String id,
.setEnsureIdUnicity(false)
.add();
}

@Test
void testWithGeneration() {
double tol = 0.001;
Network network = DanglingLineNetworkFactory.createWithGeneration();
DanglingLine danglingLine = network.getDanglingLine("DL");
assertTrue(Double.isNaN(danglingLine.getBoundary().getP())); // there is no good solution here.
// we run an DC load flow and fill state variable
danglingLine.getTerminal().setP(-298.937);
danglingLine.getTerminal().setQ(Double.NaN);
danglingLine.getTerminal().getBusView().getBus().setAngle(0.0);
danglingLine.getTerminal().getBusView().getBus().setV(Double.NaN);
assertEquals(298.937, danglingLine.getBoundary().getP(), tol);
assertEquals(1.712783, danglingLine.getBoundary().getAngle(), tol);
// we run an AC load flow
danglingLine.getTerminal().setP(-298.937);
danglingLine.getTerminal().setQ(-7.413);
danglingLine.getTerminal().getBusView().getBus().setAngle(0.0);
danglingLine.getTerminal().getBusView().getBus().setV(100.0);
assertEquals(389.999, danglingLine.getBoundary().getP(), tol);
assertEquals(16.250, danglingLine.getBoundary().getQ(), tol);
assertEquals(130.037, danglingLine.getBoundary().getV(), tol);
assertEquals(0.995, danglingLine.getBoundary().getAngle(), tol);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<iidm:generator id="G" energySource="OTHER" minP="0.0" maxP="100.0" voltageRegulatorOn="true" targetP="50.0" targetV="100.0" targetQ="30.0" bus="BUS" connectableBus="BUS">
<iidm:minMaxReactiveLimits minQ="-1.7976931348623157E308" maxQ="1.7976931348623157E308"/>
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="101.0" bus="BUS" connectableBus="BUS">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<iidm:generator id="G" energySource="OTHER" minP="0.0" maxP="100.0" voltageRegulatorOn="true" targetP="50.0" targetV="100.0" targetQ="30.0" bus="BUS" connectableBus="BUS">
<iidm:minMaxReactiveLimits minQ="-1.7976931348623157E308" maxQ="1.7976931348623157E308"/>
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="101.0" bus="BUS" connectableBus="BUS">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0"
generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0"
generationTargetV="400.0" bus="BUS" connectableBus="BUS" selectedOperationalLimitsGroupId="DEFAULT">
generationTargetV="101.0" bus="BUS" connectableBus="BUS" selectedOperationalLimitsGroupId="DEFAULT">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<iidm:generator id="G" energySource="OTHER" minP="0.0" maxP="100.0" voltageRegulatorOn="true" targetP="50.0" targetV="100.0" targetQ="30.0" bus="BUS" connectableBus="BUS">
<iidm:minMaxReactiveLimits minQ="-1.7976931348623157E308" maxQ="1.7976931348623157E308"/>
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="101.0" bus="BUS" connectableBus="BUS">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<iidm:generator id="G" energySource="OTHER" minP="0.0" maxP="100.0" voltageRegulatorOn="true" targetP="50.0" targetV="100.0" targetQ="30.0" bus="BUS" connectableBus="BUS">
<iidm:minMaxReactiveLimits minQ="-1.7976931348623157E308" maxQ="1.7976931348623157E308"/>
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="101.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<iidm:generator id="G" energySource="OTHER" minP="0.0" maxP="100.0" voltageRegulatorOn="true" targetP="50.0" targetV="100.0" targetQ="30.0" bus="BUS" connectableBus="BUS">
<iidm:minMaxReactiveLimits minQ="-1.7976931348623157E308" maxQ="1.7976931348623157E308"/>
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="101.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<iidm:generator id="G" energySource="OTHER" minP="0.0" maxP="100.0" voltageRegulatorOn="true" targetP="50.0" targetV="100.0" targetQ="30.0" bus="BUS" connectableBus="BUS">
<iidm:minMaxReactiveLimits minQ="-1.7976931348623157E308" maxQ="1.7976931348623157E308"/>
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="101.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<iidm:generator id="G" energySource="OTHER" minP="0.0" maxP="100.0" voltageRegulatorOn="true" targetP="50.0" targetV="100.0" targetQ="30.0" bus="BUS" connectableBus="BUS">
<iidm:minMaxReactiveLimits minQ="-1.7976931348623157E308" maxQ="1.7976931348623157E308"/>
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="101.0" bus="BUS" connectableBus="BUS">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<iidm:generator id="G" energySource="OTHER" minP="0.0" maxP="100.0" voltageRegulatorOn="true" targetP="50.0" targetV="100.0" targetQ="30.0" bus="BUS" connectableBus="BUS">
<iidm:minMaxReactiveLimits minQ="-1.7976931348623157E308" maxQ="1.7976931348623157E308"/>
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="101.0" bus="BUS" connectableBus="BUS">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<iidm:generator id="G" energySource="OTHER" minP="0.0" maxP="100.0" voltageRegulatorOn="true" targetP="50.0" targetV="100.0" targetQ="30.0" bus="BUS" connectableBus="BUS">
<iidm:minMaxReactiveLimits minQ="-1.7976931348623157E308" maxQ="1.7976931348623157E308"/>
</iidm:generator>
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="400.0" bus="BUS" connectableBus="BUS">
<iidm:danglingLine id="DL" p0="50.0" q0="30.0" r="10.0" x="1.0" g="1.0E-4" b="1.0E-5" generationMinP="0.0" generationMaxP="900.0" generationVoltageRegulationOn="true" generationTargetP="440.0" generationTargetV="101.0" bus="BUS" connectableBus="BUS">
<iidm:property name="test" value="test"/>
<iidm:reactiveCapabilityCurve>
<iidm:point p="0.0" minQ="-59.3" maxQ="60.0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public static Network createWithGeneration(NetworkFactory networkFactory) {
.setTargetP(440)
.setMaxP(900)
.setMinP(0)
.setTargetV(400)
.setTargetV(101)
.setVoltageRegulationOn(true)
.add()
.add();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
"reactivePowerOutput" : "NaN",
"maximumReactivePowerOutput" : 46.25,
"minimumReactivePowerOutput" : -54.55,
"voltageMagnitudeSetpoint" : 4.0,
"voltageMagnitudeSetpoint" : 1.01,
"totalMbase" : 0.0,
"status" : 1,
"maximumRealPowerOutput" : 900.0,
Expand Down

0 comments on commit b1d5473

Please sign in to comment.