SWE CNE File
Contents
Introduction
The SWE CNE file is the standard RAO output file for the SWE CC process.
The FARAO toolbox
allows exporting RAO results in a SWE CNE file using a network, an internal RAO result,
an internal CRAC, a CimCracCreationContext,
a RAO parameters, and an angle monitoring result.
The Java API
After completing the RAO, the user can export the SWE CNE file using this method of SweCneExporter:
public void exportCne(Crac crac,Network network,
CimCracCreationContext cracCreationContext,
RaoResult raoResult, AngleMonitoringResult angleMonitoringResult,
RaoParameters raoParameters,CneExporterParameters exporterParameters,OutputStream outputStream)
With:
- crac: the CRAC object used for the RAO.
- network: the network used in the RAO (not modified with any remedial action).
- cracCreationContext: the CimCracCreationContext object generated during CRAC creation from a native CIM CRAC file.
- raoResult: the RaoResult object containing selected remedial actions and flow results.
- angleMonitoringResult: the angle monitoring result object.
- raoParameters: the RaoParameters used in the RAO.
- exporterParameters: a specific object that the 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 (so don’t use it here)- Z01: Day-ahead capacity determination, used for SWE region
- 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, glsk) and parameters
Network network = ...
CimGlskDocument glsk = ...
OffsetDateTime glskOffsetDateTime = ...
LoadFlowParameters loadFlowParameters = ...
RaoParameters raoParameters = ...
// Create CRAC
CimCracCreationContext cracCreationContext = new CimCracCreator().createCrac(...);
Crac crac = cracCreationContext.getCrac();
// Run RAO
RaoResult raoResult = Rao.find(...).run(...)
// Run angle monitoring
AngleMonitoringResult angleMonitoringResult = new AngleMonitoring(crac, network, raoResult, glsk).run("OpenLoadFlow", loadFlowParameters, 2, glskOffsetDateTime);
// 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 SweCneExporter().exportCne(crac, network, cracCreationContext, raoResult, angleMonitoringResult, raoParameters, exporterParameters, os);
Contents of the SWE CNE file
Here is an overview of the general structure of the SWE 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_3.xsd" xmlns="urn:iec62325.351:tc57wg16:451-n:cnedocument:2:3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mRID>documentId</mRID>
<revisionNumber>3</revisionNumber>
<type>B06</type>
<process.processType>A48</process.processType>
<sender_MarketParticipant.mRID codingScheme="A01">senderId</sender_MarketParticipant.mRID>
<sender_MarketParticipant.marketRole.type>A44</sender_MarketParticipant.marketRole.type>
<receiver_MarketParticipant.mRID codingScheme="A01">receiverId</receiver_MarketParticipant.mRID>
<receiver_MarketParticipant.marketRole.type>A36</receiver_MarketParticipant.marketRole.type>
<createdDateTime>2022-09-28T14:47:09Z</createdDateTime>
<time_Period.timeInterval>
<start>2021-04-02T00:30Z</start>
<end>2021-04-02T01:30Z</end>
</time_Period.timeInterval>
<TimeSeries>
<mRID>CNE_RAO_CASTOR-TimeSeries-1</mRID>
<businessType>B54</businessType>
<curveType>A01</curveType>
<Period>
<timeInterval>
<start>2021-04-02T03:00Z</start>
<end>2021-04-02T04:00Z</end>
</timeInterval>
<resolution>PT60M</resolution>
<Point>
<position>1</position>
...
Remedial action results
Remedial actions have their own Constraint_Series to report the ones selected by the RAO or by the
angle monitoring module.
The remedial actions’ Constraint_Series all have a B56 businessType.
Example:
<Constraint_Series>
<mRID>542c55e-ac23-49a9-b26f-097081883e7f</mRID>
<businessType>B56</businessType>
<Contingency_Series>
<mRID>Co-1</mRID>
<name>contingency one</name>
</Contingency_Series>
<RemedialAction_Series>
<mRID>RA-19</mRID>
<name>topological remedial action 19</name>
<applicationMode_MarketObjectStatus.status>A20</applicationMode_MarketObjectStatus.status>
</RemedialAction_Series>
<RemedialAction_Series>
<mRID>RA-192@600@</mRID>
<name>HVDC remedial action@600@</name>
<applicationMode_MarketObjectStatus.status>A20</applicationMode_MarketObjectStatus.status>
</RemedialAction_Series>
<RemedialAction_Series>
<mRID>RA-45</mRID>
<name>PST remedial action 45</name>
<applicationMode_MarketObjectStatus.status>A20</applicationMode_MarketObjectStatus.status>
<RegisteredResource>
<mRID codingScheme="A01">pst_in_network@-5@</mRID>
<name>PST remedial action 45</name>
<pSRType.psrType>A06</pSRType.psrType>
<marketObjectStatus.status>A26</marketObjectStatus.status>
<resourceCapacity.defaultCapacity>-5</resourceCapacity.defaultCapacity>
<resourceCapacity.unitSymbol>C62</resourceCapacity.unitSymbol>
<marketObjectStatus.status>A26</marketObjectStatus.status>
</RegisteredResource>
</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 automatic or curative remedial actions by the RAO or by the angle monitoring module, 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.
💡 NOTE
If it is an HVDC range action, this field is followed by @setpoint@, where “setpoint” is the optimal set-point selected for the HVDC, in megawatts (see example above)
name
Name of the selected remedial action, as identified in the original CRAC.
💡 NOTE
If it is an HVDC range action, this field is followed by @setpoint@, where “setpoint” is the optimal set-point selected for the HVDC, in megawatts (see example above)
applicationMode_MarketObjectStatus.status
This tag can have one of these three values:
- A18: the remedial action was selected in preventive
- A20: the remedial action was selected as automatic
- A19: the remedial action was selected in curative
RegisteredResource (optional)
This tag is only exported for PST remedial actions, to hold their tap values.
mRID
Unique ID of the remedial action’s PST network element in the network, followed by “@tap@”, where tap is its optimal tap selected by the RAO or by the angle monitoring module.
name
Name of the selected remedial action, as identified in the original CRAC.
pSRType.psrType
Only one possible value for now:
- A06: remedial action is a PST
resourceCapacity.defaultCapacity
Optimal tap position for the PST (at instant identified by applicationMode_MarketObjectStatus.status, eventually after contingency identified by Contingency_Series).
resourceCapacity.unitSymbol
Unit of the tap given in resourceCapacity.defaultCapacity. Only one supported value for now:
- C62: dimensionless
marketObjectStatus.status
Only one supported value for now:
- A26: the tap is given in absolute value (not relatively to initial network, nor to previous instant, …)
CNEC results
CNEC results after RAO are reported in Constraint_Series tags, with businessType value B57.
Example:
<Constraint_Series>
<mRID>0cb4110-02cf-4516-943e-7f717bc1c2b8</mRID>
<businessType>B57</businessType>
<Contingency_Series>
<mRID>Co-175</mRID>
<name>contingency 175</name>
</Contingency_Series>
<AdditionalConstraint_Series>
<mRID>REN-AC-2</mRID>
<businessType>B87</businessType>
<name>Angle-ALTO-LINDOSO-CARTELLE-EXPORT</name>
<quantity.quantity>-39.8</quantity.quantity>
</AdditionalConstraint_Series>
<Monitored_Series>
<mRID>MS-1</mRID>
<name>Branch Paris-Berlin monitored in curative</name>
<RegisteredResource>
<mRID codingScheme="A02">_68c74a71-224a-245f-0b52-eac5045761eb</mRID>
<name>Branch Paris-Berlin</name>
<in_AggregateNode.mRID codingScheme="A02">_7fb8ba77-76a2-7343-b1f9-10d8fb9bdae1</in_AggregateNode.mRID>
<out_AggregateNode.mRID codingScheme="A02">_d5c2a18c-ef2d-10ae-4419-c832c53860b1</out_AggregateNode.mRID>
<Measurements>
<measurementType>A01</measurementType>
<unitSymbol>AMP</unitSymbol>
<positiveFlowIn>A02</positiveFlowIn>
<analogValues.value>270</analogValues.value>
</Measurements>
<Measurements>
<measurementType>A13</measurementType>
<unitSymbol>AMP</unitSymbol>
<positiveFlowIn>A02</positiveFlowIn>
<analogValues.value>2606</analogValues.value>
</Measurements>
</RegisteredResource>
</Monitored_Series>
<Monitored_Series>
<mRID>MS-2</mRID>
<name>Branch Paris-Brussels monitored in curative</name>
...
mRID
Random ID, unique in the CNE document.
businessType
One possible value to signify it’s a CNEC result: B57.
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
⚠️ NOTE
Multiple Contingency_Series can exist, meaning that the following results are valid for all the listed contingencies. Avoiding redundant information allows a more compact file.
Reason (optional)
When sensitivity computation fails in a given perimeter (in basecase or after a specific contingency identified by Contingency_Series), this tag is present with the following information:
- code: “B40”
- text: “Load flow divergence”
Then no more results are exported for the failed perimeter.
AdditionalConstraint_Series (optional)
If angle CNECs are monitored in the actual perimeter (in basecase or after a specific contingency identified by Contingency_Series), this tag contains angle values from the angle monitoring module.
mRID
Unique ID of the angle CNEC, as defined in the orignal CRAC file.
businessType
One possible value: B87 (angle monitoring).
name
Name of the angle CNEC, as defined in the orignal CRAC file.
quantity.quantity
Phase shift angle value of the CNEC, expressed in degrees.
Monitored_Series
mRID
Unique ID of the CNEC as defined in the native CRAC file.
name
Name of the CNEC as defined in the native CRAC file.
RegisteredResource
mRID
Unique ID of the CNEC’s network element, as defined in the native CRAC file and in the network.
name
The name of the CNEC as defined in the native CRAC file.
in_AggregateNode.mRID
Unique ID, in the network, of the voltage level on the branch’s left side.
out_AggregateNode.mRID
Unique ID, in the network, of the voltage level on the branch’s right side.
PTDF_Domain (optional)
Only in the hypothetical case of a relative margins objective function.
- mRID: ENTSO-E EICode of the area
- pTDF_Quantity.quantity: value of the PTDF associated to the bidding zone for the critical network element
⚠️ NOTE
This tag is currently not supported in FARAO, since the SWE CC process (only process to use the SWE CNE format) does not optimise relative margins
Measurements
- measurementType: type of measurement, possible values are:
- A01: flow
- A02: PATL in the preventive state (input data)
- A07: TATL right after outage (input data)
- A12: TATL at auto instant (input data)
- A13: PATL in curative (input data)
- unitSymbol: unit of measurement. Only supported value is AMP (ampere)
- 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 whether the Constraint_Series is preventive, some or all of these measurements are expected:
Measurement type | Measurement | Unit(s) | Exported in preventive B57 | Exported in non-preventive B57 |
---|---|---|---|---|
A01 | Flow | AMP | ✔️ | ✔️ |
A02 | PATL (preventive) | AMP | ✔️ | |
A07 | TATL (outage) | AMP | ️ | at least one |
A12 | TATL (auto) | AMP | ️ | of these three |
A13 | PATL (curative) | AMP | ️ | measurements️ |
RemedialAction_Series (optional)
This tag is used to report remedial actions that were selected by the RAO for the CNEC’s state.
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
Three possible values:
- A18: the remedial action was selected in preventive
- A20: the remedial action was selected as an automaton
- A19: the remedial action was selected in curative
Overall status
The overall status of the RAO computation is exported in a Reason tag. Here are the possible out-comes.
Secure network
<Reason>
<code>Z13</code>
<text>Network is secure</text>
</Reason>
This means that the RAO completed successfully and that the network is secure (i.e. no flow nor angle constraints remain).
Unsecure network
<Reason>
<code>Z03</code>
<text>Network is unsecure</text>
</Reason>
This means that the RAO completed successfully but that the network is unsecure (i.e. there remains at least one flow or one angle constraints).
Load-flow divergence
<Reason>
<code>B40</code>
<text>Load flow divergence</text>
</Reason>
This means that the RAO or the angle monitoring could not be conducted normally because at least one perimeter lead to a load-flow divergence. This perimeter can be identified by looking at the B57 Constraint_Series.
See also