Skip to content

Commit 788e0ba

Browse files
authored
feature(German HVDCs): Implement CNE export mechanism for German HVDCs (#1653)
* Handle HVDC RAs at pre-optim in Core CNE export Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Code refactoring to make pre-optim B56 generation look more similar to post-PRA and post-CRA B56 generation Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Finalize Core CNE export for HVDC german HVDCs Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Code review Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Refactoring of CoreCneRemedialActionsCreatorTest class Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Rename some methods Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Reorder methods in CoreCneRemedialActionsCreatorTest class Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Add unit tests for german HVDC RAs in Core CNE exporter Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Fix bug in InjectionRangeAction filtering Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Fix bug RegisteredResource elementName in Core CNE export Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Add Cucumber tests for Core CNE export Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Remove TODO Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Update Core CNE documentation page Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Add more final keyword Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Update VirtualHubs documentation page Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Update Flowbased Constraint CRAC documentation page Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Code review Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Rename added Cucumber test scenarii Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Add some test case with VirtualHubs file as input instead of CracCreationParameters file Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Update FbConstraint section in CRAC Creation Parameters documentation page Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Improve Cucumber tests for German HVDC & VirtualHubs Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Remove forgotten todo Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> * Code review Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com> --------- Signed-off-by: Vincent BOCHET <vincent.bochet@rte-france.com>
1 parent 916a432 commit 788e0ba

24 files changed

Lines changed: 2164 additions & 580 deletions

File tree

data/crac/crac-io/crac-io-fb-constraint/src/main/java/com/powsybl/openrao/data/crac/io/fbconstraint/HvdcLineRemedialActionAdder.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import com.powsybl.openrao.data.crac.api.InstantKind;
1212
import com.powsybl.openrao.data.crac.api.RemedialActionAdder;
1313
import com.powsybl.openrao.data.crac.api.rangeaction.InjectionRangeActionAdder;
14+
import com.powsybl.openrao.data.crac.io.commons.api.ElementaryCreationContext;
15+
import com.powsybl.openrao.data.crac.io.commons.api.StandardElementaryCreationContext;
1416
import com.powsybl.openrao.data.crac.io.commons.ucte.UcteGeneratorHelper;
1517
import com.powsybl.openrao.data.crac.io.commons.ucte.UcteNetworkAnalyzer;
1618
import com.powsybl.openrao.data.crac.io.fbconstraint.xsd.ActionsSetType;
@@ -174,10 +176,26 @@ private void addUsageRules(final RemedialActionAdder<?> remedialActionAdder, fin
174176

175177
private void addComplexVariantCreationContexts(final FbConstraintCreationContext creationContext) {
176178
if (fromComplexVariantReader != null) {
177-
creationContext.addComplexVariantCreationContext(fromComplexVariantReader.getComplexVariantCreationContext());
179+
creationContext.addComplexVariantCreationContext(
180+
getHvdcCreationContext(fromComplexVariantReader.getComplexVariantCreationContext(), fromNodeName)
181+
);
178182
}
179183
if (toComplexVariantReader != null) {
180-
creationContext.addComplexVariantCreationContext(toComplexVariantReader.getComplexVariantCreationContext());
184+
creationContext.addComplexVariantCreationContext(
185+
getHvdcCreationContext(toComplexVariantReader.getComplexVariantCreationContext(), toNodeName)
186+
);
181187
}
182188
}
189+
190+
private ElementaryCreationContext getHvdcCreationContext(final ElementaryCreationContext complexVariantCreationContext,
191+
final String networkElementName) {
192+
return new StandardElementaryCreationContext(
193+
complexVariantCreationContext.getNativeObjectId(),
194+
networkElementName,
195+
complexVariantCreationContext.getCreatedObjectId(),
196+
complexVariantCreationContext.getImportStatus(),
197+
complexVariantCreationContext.getImportStatusDetail(),
198+
complexVariantCreationContext.isAltered()
199+
);
200+
}
183201
}

data/rao-result/rao-result-io/rao-result-cne/cne-exporter-commons/src/main/java/com/powsybl/openrao/data/raoresult/io/cne/commons/CneConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,10 @@ public final class CneConstants {
8787
/* RegisteredResource */
8888
// pSRType.psrType
8989
public static final String PST_RANGE_PSR_TYPE = "A06";
90+
public static final String DC_LINK_PSR_TYPE = "B22";
9091
// resourceCapacity.unitSymbol
9192
public static final String WITHOUT_UNIT_SYMBOL = "C62";
93+
public static final String MEGAWATTS_UNIT_SYMBOL = "MAW";
9294
// marketObjectStatus.status
9395
public static final String ABSOLUTE_MARKET_OBJECT_STATUS = "A26";
9496

data/rao-result/rao-result-io/rao-result-cne/core-cne-exporter/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,10 @@
143143
<artifactId>mockito-core</artifactId>
144144
<scope>test</scope>
145145
</dependency>
146+
<dependency>
147+
<groupId>org.assertj</groupId>
148+
<artifactId>assertj-core</artifactId>
149+
<scope>test</scope>
150+
</dependency>
146151
</dependencies>
147152
</project>

data/rao-result/rao-result-io/rao-result-cne/core-cne-exporter/src/main/java/com/powsybl/openrao/data/raoresult/io/cne/core/CoreCneClassCreator.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,20 @@ public static RemedialActionSeries newRemedialActionSeries(String id, String nam
184184
return remedialActionSeries;
185185
}
186186

187-
public static RemedialActionRegisteredResource newRemedialActionRegisteredResource(String id, String name, String psrType, int setpoint, String unitSymbol, String marketObjectStatus) {
187+
public static RemedialActionRegisteredResource newRemedialActionRegisteredResource(final String id, final String name, final String psrType, final int setpoint, final String unitSymbol, final String marketObjectStatus) {
188+
return getRemedialActionRegisteredResource(id, name, psrType, BigDecimal.valueOf(setpoint), unitSymbol, marketObjectStatus);
189+
}
190+
191+
public static RemedialActionRegisteredResource newRemedialActionRegisteredResource(final String id, final String name, final String psrType, final double setpoint, final String unitSymbol, final String marketObjectStatus) {
192+
return getRemedialActionRegisteredResource(id, name, psrType, BigDecimal.valueOf(setpoint), unitSymbol, marketObjectStatus);
193+
}
194+
195+
private static RemedialActionRegisteredResource getRemedialActionRegisteredResource(final String id, final String name, final String psrType, final BigDecimal setpoint, final String unitSymbol, final String marketObjectStatus) {
188196
RemedialActionRegisteredResource remedialActionRegisteredResource = new RemedialActionRegisteredResource();
189197
remedialActionRegisteredResource.setMRID(createResourceIDString(A01_CODING_SCHEME, id));
190198
remedialActionRegisteredResource.setName(name);
191199
remedialActionRegisteredResource.setPSRTypePsrType(psrType);
192-
remedialActionRegisteredResource.setResourceCapacityDefaultCapacity(BigDecimal.valueOf(setpoint));
200+
remedialActionRegisteredResource.setResourceCapacityDefaultCapacity(setpoint);
193201
remedialActionRegisteredResource.setResourceCapacityUnitSymbol(unitSymbol);
194202
remedialActionRegisteredResource.setMarketObjectStatusStatus(marketObjectStatus);
195203
return remedialActionRegisteredResource;

0 commit comments

Comments
 (0)