Skip to content

IIDM & XIIDM 1.11 evolutions

Olivier Perrin edited this page Sep 28, 2023 · 6 revisions

Features

Subnetworks

When merging networks (see Migration guide), the structure of the merged networks is kept:

  • The resulting network contains a subnetwork for each merged network;
  • The used networks are emptied from their content and are thus not usable anymore.
Network n1 = ... // network of id "Network-1"
Network n2 = ... // network of id "Network-2"
Network n = Network.merge("Merged", n1, n2); // Merged network of id "Merged"

int subnetworkCount = n.getSubnetworks().size(); // result = 2
Network subnetwork1 = n.getSubnetwork("Network-1");
Network subnetwork2 = n.getSubnetwork("Network-2");

The subnetwork structure is importable/exportable in XIIDM. Each subnetwork is exported as a network tag and keeps its own network elements and extensions.

Note that only one level of subnetworks is currently supported.

Network elements can be added at subnetwork level, if it is fully contained by a subnetwork, or at the main network level. In this latter case, if the element is fully contained by a subnetwork, it is created in the said subnetwork. Else it is created in the main network.

<!-- Merged network -->
<iidm:network xmlns:iidm="http://www.powsybl.org/schema/iidm/1_11" xmlns:mock="http://www.powsybl.org/schema/iidm/ext/terminal_mock/1_11" xmlns:extNetworkSource="http://www.itesla_project.eu/schema/iidm/ext/networksource/1_0"
    id="Merged" caseDate="2013-01-15T18:40:00.000+01:00" forecastDistance="0" sourceFormat="format" minimumValidationLevel="STEADY_STATE_HYPOTHESIS">

    <!-- Subnetwork "Network-1" -->
    <iidm:network id="Network-1" caseDate="2013-01-15T18:41:00.000+01:00" forecastDistance="0" sourceFormat="format" minimumValidationLevel="STEADY_STATE_HYPOTHESIS">
        <!-- Network-1 elements: -->
        <iidm:substation id="s1" country="FR">
        <!-- ... -->

        <!-- Network-1 extensions: -->
        <iidm:extension id="Network-1">
            <extNetworkSource:networkSource sourceData="Source_1"/>
        </iidm:extension>
        <!-- ... -->

    </iidm:network>

    <!-- Subnetwork "Network-2" -->
    <iidm:network id="Network-2" caseDate="2013-01-15T18:42:00.000+01:00" forecastDistance="0" sourceFormat="format" minimumValidationLevel="STEADY_STATE_HYPOTHESIS">
        <!-- Network-2 elements: -->
        <iidm:substation id="s2" country="FR">
        <!-- ... -->

        <!-- Network-2 extensions: -->
        <iidm:extension id="LOAD">
            <mock:terminalMock>
                <mock:terminal id="LOAD"/>
            </mock:terminalMock>
        </iidm:extension>
        <iidm:extension id="Network-2">
            <extNetworkSource:networkSource sourceData="Source_2"/>
        </iidm:extension>
        <!-- ... -->

    </iidm:network>

    <!-- Network elements and extensions of the main network: -->
    <iidm:tieLine id="dl1 + dl2" name="dl1_name + dl2_name" danglingLineId1="dl1" danglingLineId2="dl2"/>
    <!-- ... -->
    <iidm:extension id="Merged">
        <extNetworkSource:networkSource sourceData="Source_0"/>
    </iidm:extension>
    <!-- ... -->

</iidm:network>

Identifiable has now 2 methods to retrieve its Network:

  • getNetwork() returns the main network;
  • getParentNetwork() returns the smallest network containing the identifiable (i.e. the subnetwork which contains it, if one exists, or the main network).

Properties on calculated buses

In voltage level in node/breaker topology, we export in XIIDM format buses as

<iidm:bus v="234.40912" angle="0.0" nodes="0,1,2,3,4"/>

These are called calculated buses. From this IIDM version, properties associated to these buses are exported. This will lead to something like:

<iidm:bus v="234.40912" angle="0.0" nodes="0,1,2,3,4">
      <iidm:property name="key_test" value="value_test"/>
</iidm:bus>

Voltage angle limits

A voltage angle limit is the admissible value for the voltage angle difference in degree between the buses associated to two terminals. This operational limit is associated to the network, as it can linked two terminals not directly connected through an equipment. The difference checks in a security analysis is always the voltage angle at bus of the to terminal minus the voltage angle at bus of the from terminal. This difference must be less than the high limit and higher than the low limit. Signs are important but both limits are optional. Note that to control voltage angle difference between two buses in both direction, high and low limits must be equal in absolute value with opposite sign.

<iidm:voltageAngleLimit id="VOLTAGE_ANGLE_LIMIT_NHV1_NHV2_2" lowLimit="0.2">
    <iidm:from id="NHV1_NHV2_2" side="ONE"/>
    <iidm:to id="NHV1_NHV2_2" side="TWO"/>
</iidm:voltageAngleLimit>
<iidm:voltageAngleLimit id="VOLTAGE_ANGLE_LIMIT_NGEN_NHV1" highLimit="0.35" lowLimit="-0.2">
     <iidm:from id="GEN"/>
     <iidm:to id="NGEN_NHV1" side="TWO"/>
</iidm:voltageAngleLimit>

A network has a set of voltage angle limits with each a unique identifier among them. But the unicity is not guarantee with the network identifiers.

Dangling line attribute name change

ucteXnodeCode has been renamed into pairingKey.

Clone this wiki locally