CORE CNE File#
Introduction#
The CORE CNE file is the standard RAO output file for the CORE CC process.
The OpenRAO toolbox
allows exporting RAO results in a CORE CNE file using a network, an internal RAO result,
an internal CRAC, a UcteCracCreationContext,
and RAO parameters.
The Java API#
After completing the RAO, the user can export the CORE CNE file using this method of CoreCneExporter:
public void exportCne(Crac crac,
UcteCracCreationContext cracCreationContext,
RaoResult raoResult, RaoParameters raoParameters,
CneExporterParameters exporterParameters, OutputStream outputStream)
With:
crac: the CRAC object used for the RAO.
cracCreationContext: the CracCreationContext object generated during CRAC creation. CORE CNE export only handles UcteCracCreationContext subtype, because it follows the UCTE conventions.
raoResult: the RaoResult object containing selected remedial actions and flow results.
raoParameters: the RaoParameters used in the RAO.
exporterParameters: a specific object that te user should define, containing meta-information that will be written in the header of the CNE file:
documentId: document ID to be written in “mRID” field
revisionNumber: integer to be written in “revisionNumber” field
domainId: domain ID to be written in “domain.mRID” field (usually an ENTSO-E EICode)
processType: the ENTSO-E code of the process type, to be written in “process.processType” field:
A48: Day-ahead capacity determination, used for CORE region
~~Z01~~: Day-ahead capacity determination, used for SWE region (so don’t use it here)
senderId: ID of the sender of the CNE document, to be written in “sender_MarketParticipant.mRID” field (usually an ENTSO-E EICode)
senderRole: ENTSO-E code defining the role of the sender of the CNE document, to be written in “sender_MarketParticipant.marketRole.type” field:
A04: system operator
A36: capacity coordinator
A44: regional security coordinator
receiverId: ID of the receiver of the CNE document, to be written in “receiver_MarketParticipant.mRID” field (usually an ENTSO-E EICode)
receiverRole: ENTSO-E code defining the role of the receiver of the CNE document, to be written in “receiver_MarketParticipant.marketRole.type” field. Same value options as senderRole.
timeInterval: time interval of document applicability, to be written in “time_Period.timeInterval” field. It should be formatted as follows: “YYYY-MM-DDTHH:MMZ/YYYY-MM-DDTHH:MMZ” (start date / end date).
Here is a complete example:
// Fetch input data (network) and parameters
Network network = ...
RaoParameters raoParameters = ...
// Create CRAC
CracCreationContext cracCreationContext = CracCreators.createCrac(...);
Crac crac = cracCreationContext.getCrac();
// Run RAO
RaoResult raoResult = Rao.find(...).run(...)
// Set CNE header parameters
CneExporterParameters exporterParameters = new CneExporterParameters("DOCUMENT_ID", 1, "DOMAIN_ID",
CneExporterParameters.ProcessType.DAY_AHEAD_CC, "SENDER_ID",
CneExporterParameters.RoleType.REGIONAL_SECURITY_COORDINATOR, "RECEIVER_ID",
CneExporterParameters.RoleType.CAPACITY_COORDINATOR,
"2021-10-30T22:00Z/2021-10-31T23:00Z");
// Export CNE to output stream
OutputStream os = ...
new CoreCneExporter().exportCne(crac, cracCreationContext, raoResult, raoParameters, exporterParameters, os);
Contents of the CORE CNE file#
Here is an overview of the general structure of the CORE CNE document, detailed in the following sections:
Header#
The header contains meta-information about the process.
Refer to the JAVA API section for more details.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CriticalNetworkElement_MarketDocument xsi:schemaLocation="iec62325-451-n-cne_v2_4_FlowBased_v04.xsd" xmlns="urn:iec62325.351:tc57wg16:451-n:cnedocument:2:4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mRID>DOCUMENT_ID</mRID>
<revisionNumber>1</revisionNumber>
<type>B06</type>
<process.processType>A48</process.processType>
<sender_MarketParticipant.mRID codingScheme="A01">SENDER_ID</sender_MarketParticipant.mRID>
<sender_MarketParticipant.marketRole.type>A44</sender_MarketParticipant.marketRole.type>
<receiver_MarketParticipant.mRID codingScheme="A01">RECEIVER_ID</receiver_MarketParticipant.mRID>
<receiver_MarketParticipant.marketRole.type>A36</receiver_MarketParticipant.marketRole.type>
<createdDateTime>2021-12-30T15:09:43Z</createdDateTime>
<time_Period.timeInterval>
<start>2021-10-30T22:00Z</start>
<end>2021-10-31T23:00Z</end>
</time_Period.timeInterval>
<domain.mRID codingScheme="A01">DOMAIN_ID</domain.mRID>
<TimeSeries>
<mRID>CNE_RAO_CASTOR-TimeSeries-1</mRID>
<businessType>B54</businessType>
<curveType>A01</curveType>
<Period>
<timeInterval>
<start>2019-01-07T23:00Z</start>
<end>2019-01-08T00:00Z</end>
</timeInterval>
<resolution>PT60M</resolution>
<Point>
<position>1</position>
...
CNEC results#
CNEC results after RAO are reported in Constraint_Series tags, with businessType value B88, B57 or B54.
Example:
<Constraint_Series>
<mRID>ME_one_co_one_dir</mRID>
<businessType>B88</businessType>
<Party_MarketParticipant>
<mRID codingScheme="A01">10XFR-RTE------Q</mRID>
</Party_MarketParticipant>
<optimization_MarketObjectStatus.status>A52</optimization_MarketObjectStatus.status>
<Contingency_Series>
<mRID>Co_one</mRID>
<name>Co_one</name>
</Contingency_Series>
<Monitored_Series>
<mRID>ME_one_co_one_dir</mRID>
<name>ME_one|Co_one</name>
<RegisteredResource>
<mRID codingScheme="A02">ME_one_co_one_dir</mRID>
<name>ME_one</name>
<Measurements>
<measurementType>A01</measurementType>
<unitSymbol>MAW</unitSymbol>
<positiveFlowIn>A02</positiveFlowIn>
<analogValues.value>1118</analogValues.value>
</Measurements>
<Measurements>
<measurementType>A02</measurementType>
<unitSymbol>AMP</unitSymbol>
<positiveFlowIn>A01</positiveFlowIn>
...
mRID#
Unique ID of the CNEC as defined in the native CRAC file.
businessType#
Three possible values for CNEC results:
B88: these are the CNEC initial results (i.e. before remedial action optimisation)
B57: these are the CNEC intermediate results, after preventive remedial actions optimisation and before curative remedial actions optimisation
B54: these are the CNEC final results, after curative remedial actions optimisation
⚠️ NOTE In order to align OpenRAO with other capacity calculation tools, B54 series are not exported for CNECs if no curative remedial actions were applied (even though it makes sense to export them, because PATL results are not exported in B57 series, as explained further in this article)
Party_MarketParticipant#
mRID: ENTSO-E EICode of the CNEC’s operator (in mRID tag).
optimization_MarketObjectStatus.status#
Two possible values:
Contingency_Series (optional)#
Exists if the CNEC is monitored after a contingency (if the CNEC is preventive, this tag does not exist):
mRID: unique ID of the contingency as it is defined in the native CRAC
name: name of the contingency as it is defined in the native CRAC
Monitored_Series#
mRID#
Unique ID of the CNEC as defined in the native CRAC file (same as mRID of Constraint_Series).
name#
Formatted “native name|contingency name”, where:
“native name” is the name of the CNEC as defined in the native CRAC file;
“contingency name” is the name of the contingency referenced in Contingency_Series.
RegisteredResource#
mRID#
Unique ID of the CNEC as defined in the native CRAC file (same as mRID of Constraint_Series).
name#
The name of the CNEC as defined in the native CRAC file.
Measurements#
measurementType: type of measurement, possible values are:
A01: flow
A02: PATL (input data)
A07: TATL (input data)
A03: flow reliability margin (input data)
Z11: absolute zonal PTDF sum
Z12: flow margin in regard to the PATL
Z13: objective function value for this CNEC in regard to the PATL
This value is equal to Z12 unless RAO is run with relative positive margins, in which case it will be equal to Z12 / Z11 when Z12 is positive.Z14: flow margin in regard to the TATL
Z15: objective function value for this CNEC in regard to the TATL
This value is equal to Z14 unless RAO is run with relative positive margins, in which case it will be equal to Z14 / Z11 when Z14 is positive.Z16: loop-flow
Z17: loop-flow threshold (input data)
unitSymbol: unit of measurement, possible values are:
MAW: megawatt
AMP: ampere
C62: dimensionless
positiveFlowIn: sign of the value, possible values are:
A01: measurement is positive (its actual value is analogValues.value)
A02: measurement is negative (its actual value is -analogValues.value)
analogValues.value: absolute value of the measurement
Depending on the business type of the Constraint_Series, some or all of these measurements are expected:
Measurement type |
Measurement |
Unit(s) |
Exported in B88 (initial) |
Exported in B57 (after PRA) |
Exported in B54 (after CRA) |
---|---|---|---|---|---|
A01 |
Flow |
MAW |
✔️ |
✔️ |
✔️ |
A02 |
PATL |
MAW, AMP |
✔️ |
✔️ |
|
A07 |
TATL |
MAW, AMP |
✔️ |
✔️ |
|
A03 |
FRM |
MAW |
✔️ |
✔️ |
✔️ |
Z11 |
PTDF sum |
C62 |
✔️ |
✔️ |
✔️ |
Z12 |
PATL margin |
MAW |
✔️ |
✔️ |
|
Z13 |
PATL objective |
MAW |
✔️ |
✔️ |
|
Z14 |
TATL margin |
MAW |
✔️ |
✔️ |
|
Z15 |
TATL objective |
MAW |
✔️ |
✔️ |
|
Z16 |
Loop-flow |
MAW |
✔️ |
✔️ |
✔️ |
Z17 |
Loop-flow threshold |
MAW |
✔️ |
✔️ |
✔️ |
RemedialAction_Series (optional)#
This tag is used to report remedial actions that were selected by the RAO for the CNEC’s state:
If a PRA is selected for the CNEC’s state, it will be reported inside the B54 & B57 Constraint_Series of this CNEC
If a CRA is selected for the CNEC’s state, it will be reported inside the B57 Constraint_Series of this CNEC
mRID#
Unique ID of the selected remedial action, as identified in the original CRAC.
name#
Name of the selected remedial action, as identified in the original CRAC.
applicationMode_MarketObjectStatus.status#
Two possible values:
A18: the remedial action was selected in preventive
A19: the remedial action was selected in curative
Remedial action results#
In addition to being reported inside CNECs’ Constraint_Series, remedial actions have their own Constraint_Series
to report the ones selected by the RAO.
The remedial actions’ Constraint series all have a B56 businessType.
Example:
<Constraint_Series>
<mRID>RAseries_27295</mRID>
<businessType>B56</businessType>
<Contingency_Series>
<mRID>Co_one</mRID>
<name>Co_one</name>
</Contingency_Series>
<RemedialAction_Series>
<mRID>pst_one</mRID>
<name>pst_one</name>
<applicationMode_MarketObjectStatus.status>A19</applicationMode_MarketObjectStatus.status>
<Party_MarketParticipant>
<mRID codingScheme="A01">10X1001A1001A094</mRID>
</Party_MarketParticipant>
<RegisteredResource>
<mRID codingScheme="A01">pst_one</mRID>
<name>FPRAGN22 FDEPHT21 1</name>
<pSRType.psrType>A06</pSRType.psrType>
<marketObjectStatus.status>A26</marketObjectStatus.status>
<resourceCapacity.defaultCapacity>-8</resourceCapacity.defaultCapacity>
<resourceCapacity.unitSymbol>C62</resourceCapacity.unitSymbol>
</RegisteredResource>
</RemedialAction_Series>
<RemedialAction_Series>
<mRID>network_three</mRID>
<name>network_three</name>
<applicationMode_MarketObjectStatus.status>A18</applicationMode_MarketObjectStatus.status>
<Party_MarketParticipant>
<mRID codingScheme="A01">10XFR-RTE------Q</mRID>
</Party_MarketParticipant>
</RemedialAction_Series>
...
mRID#
Random ID, unique in the CNE document.
businessType#
Always B56, to signify that this is a remedial-action Constraint_Series.
Contingency_Series (optional)#
If this tag exists, then this Constraint_Series reports selected curative remedial actions by the RAO, after the contingency defined in this tag:
mRID: unique ID of the contingency as it is defined in the native CRAC
name: name of the contingency as it is defined in the native CRAC
RemedialAction_Series#
mRID#
Unique ID of the selected remedial action, as identified in the original CRAC.
name#
Name of the selected remedial action, as identified in the original CRAC.
applicationMode_MarketObjectStatus.status (optional)#
If this tag exists, it can have one of two values:
A18: the remedial action was selected in preventive
A19: the remedial action was selected in curative
If it doesn’t exist, it means that the following describes the remedial action before optimisation (only useful to know the initial set-points of range actions).
Party_MarketParticipant#
ENTSO-E EICode of the remedial action’s operator (in mRID tag).
RegisteredResource (optional)#
This tag is only exported for range actions, to hold their set-point values.
mRID#
Unique ID of the selected remedial action, as identified in the original CRAC (same as mRID of RemedialAction_Series).
name#
Identifier of range action’s UCTE network element.
pSRType.psrType#
Only one possible value for now:
A06: remedial action is a PST
resourceCapacity.defaultCapacity#
Value of the range action’s set-point (tap position for a PST range action).
If applicationMode_MarketObjectStatus.status tag does not exist, this is the remedial action’s initial set-point in the network.
If it does and is equal to A18, this is the optimal preventive set-point.
If it does and is equal to A19, this is the optimal curative set-point, for contingency defined in Contingency_Series above.
resourceCapacity.unitSymbol#
Unit of the set-point given in resourceCapacity.defaultCapacity. Only one supported value for now:
C62: dimensionless