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.

CORE CNE

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: CORE CNE general structure

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:

  • A52: the CNEC is optimised

  • A49: the CNEC is monitored

    ⚠️ NOTE In order to align OpenRAO with other capacity calculation tools, CNECs that are both optimised and monitored are currently only exported with an A52 type

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