Skip to content

Commit c52fa89

Browse files
committed
add a report
Signed-off-by: Clement Philipot <[email protected]>
1 parent d0c2b88 commit c52fa89

File tree

4 files changed

+38
-3
lines changed

4 files changed

+38
-3
lines changed

commons/src/main/resources/com/powsybl/commons/reports.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ core.iidm.network.tooManyRegulatingControlEnabled = Transformer '${id}': only on
181181
core.iidm.network.undefinedShuntSection = Shunt compensator '${id}': the current section number is undefined
182182
core.iidm.network.validationWarningBothRatioPhase = Transformer '${id}' has both Ratio and Phase Tap Changer.
183183
core.iidm.network.validationWarningReactiveCapabilityCurveDuplicate = Reactive capability curve for ${id} has a duplicate point for active power ${p}
184+
core.iidm.network.validationWarningReactiveCapabilityCurveReversedMinQMaxQ = Reactive capability curve for ${id} : reversed minQ > maxQ values have been put in the right order
184185
core.iidm.network.voltageSetpointInvalidVoltageRegulatorOn = '${id}': voltage setpoint value (${voltageSetpoint}) is invalid (voltage regulator is on)
185186
core.iidm.serde.extensionNotFound = Extension ${extensionName} not found.
186187
core.iidm.serde.extensionsNotFound = Not found extensions

iidm/iidm-api/src/main/java/com/powsybl/iidm/network/util/NetworkReports.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ public static void parentHasDuplicatePointForActivePower(ReportNode reportNode,
5757
.add();
5858
}
5959

60+
public static void reactiveCapabilityCurveReversedMinQMaxQ(ReportNode reportNode, String id) {
61+
reportNode.newReportNode()
62+
.withMessageTemplate("core.iidm.network.validationWarningReactiveCapabilityCurveReversedMinQMaxQ")
63+
.withTypedValue("id", id, TypedValue.ID)
64+
.withSeverity(TypedValue.WARN_SEVERITY)
65+
.add();
66+
}
67+
6068
public static ReportNode runIidmNetworkValidationCHecks(ReportNode reportNode, String networkId) {
6169
return Objects.requireNonNull(reportNode).newReportNode()
6270
.withMessageTemplate("core.iidm.network.IIDMValidation")

iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/ReactiveCapabilityCurveAdderImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,12 @@ public ReactiveCapabilityCurveAdder endPoint() {
8181
}
8282
}
8383
if (maxQ < minQ) {
84-
LOGGER.warn("minQ > maxQ : values were inverted and have been put in the right order");
8584
double temp = minQ;
8685
minQ = maxQ;
8786
maxQ = temp;
87+
LOGGER.warn("minQ > maxQ : values were reversed and have been put in the right order");
88+
NetworkReports.reactiveCapabilityCurveReversedMinQMaxQ(owner.getNetwork().getReportNodeContext().getReportNode(),
89+
owner.getMessageHeader().id());
8890
}
8991

9092
points.put(p, new PointImpl(p, minQ, maxQ));

iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/ReactiveCapabilityCurveImplTest.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
*/
88
package com.powsybl.iidm.network.impl;
99

10+
import com.powsybl.commons.report.PowsyblCoreReportResourceBundle;
11+
import com.powsybl.commons.report.ReportNode;
12+
import com.powsybl.commons.test.PowsyblTestReportResourceBundle;
13+
import com.powsybl.commons.test.TestUtil;
1014
import com.powsybl.iidm.network.Generator;
1115
import com.powsybl.iidm.network.Network;
1216
import com.powsybl.iidm.network.ReactiveCapabilityCurve;
@@ -17,9 +21,13 @@
1721
import org.junit.jupiter.params.ParameterizedTest;
1822
import org.junit.jupiter.params.provider.ValueSource;
1923

24+
import java.io.IOException;
25+
import java.io.StringWriter;
2026
import java.util.TreeMap;
2127

2228
import static org.junit.jupiter.api.Assertions.assertEquals;
29+
import static org.junit.jupiter.api.Assertions.assertTrue;
30+
2331
/**
2432
*
2533
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
@@ -34,6 +42,13 @@ private ReactiveCapabilityCurveImpl createCurve(Point... points) {
3442
return new ReactiveCapabilityCurveImpl(map, "ReactiveCapabilityCurve owner");
3543
}
3644

45+
private static boolean checkReportNode(String expected, ReportNode reportNode) throws IOException {
46+
StringWriter sw = new StringWriter();
47+
reportNode.print(sw);
48+
assertEquals(expected, TestUtil.normalizeLineSeparator(sw.toString()));
49+
return true;
50+
}
51+
3752
@Test
3853
void testReactiveCapabilityCurve() {
3954
ReactiveCapabilityCurveImpl curve = createCurve(new PointImpl(100.0, 200.0, 300.0),
@@ -58,9 +73,16 @@ void testReactiveCapabilityCurve() {
5873
}
5974

6075
@Test
61-
void testReactiveCapabilityCurveWithInvertedMinQMaxQ() {
76+
void testReactiveCapabilityCurveWithInvertedMinQMaxQ() throws IOException {
6277

6378
Network network = FictitiousSwitchFactory.create();
79+
80+
ReportNode reportNode = ReportNode.newRootReportNode()
81+
.withResourceBundles(PowsyblTestReportResourceBundle.TEST_BASE_NAME, PowsyblCoreReportResourceBundle.BASE_NAME)
82+
.withMessageTemplate("key1")
83+
.build();
84+
network.getReportNodeContext().pushReportNode(reportNode);
85+
6486
Generator generator = network.getGenerator("CB");
6587

6688
ReactiveCapabilityCurve reactiveCapabilityCurve = generator.newReactiveCapabilityCurve()
@@ -78,9 +100,11 @@ void testReactiveCapabilityCurveWithInvertedMinQMaxQ() {
78100

79101
assertEquals(1.0, reactiveCapabilityCurve.getMinQ(1.0), 0.0);
80102
assertEquals(5.0, reactiveCapabilityCurve.getMaxQ(1.0), 0.0);
81-
//inverted minQ and maxQ have been put in the right order :
103+
// reversed minQ and maxQ values have been put in the right order :
82104
assertEquals(2.0, reactiveCapabilityCurve.getMinQ(100.0), 0.0);
83105
assertEquals(10.0, reactiveCapabilityCurve.getMaxQ(100.0), 0.0);
106+
assertTrue(checkReportNode("+ name1" + System.lineSeparator() +
107+
" Reactive capability curve for CB : reversed minQ > maxQ values have been put in the right order" + System.lineSeparator(), network.getReportNodeContext().getReportNode()));
84108
}
85109

86110
@ParameterizedTest

0 commit comments

Comments
 (0)