Skip to content

IIDM & XIIDM 1.3 evolutions

MioRtia edited this page Jul 20, 2020 · 9 revisions

New features

Shunt compensator

Since release 3.5.0, it is possible for a shunt compensator to be linear or non linear (only linear shunt compensators used to be supported in previous releases).

In order to do this, the notion of ShuntCompensatorModel was introduced: it contains the behavior of the shunt compensator's sections (linear or non linear).

In order to create a linear shunt compensator, you will now have to do:

ShuntCompensator sc = voltageLevel.newShuntCompensator()
                         .setSectionCount(sectionCount)
                         .newLinearModel()
                              .setBPerSection(bPerSection)
                              .setGPerSection(gPerSection) // optional
                              .setMaximumCount(maximumCount)
                              .add()
                         .add();

In order to create a non linear shunt compensator, you will have to do:

ShuntCompensator sc = voltageLevel.newShuntCompensato()
                        .setSectionCount(sectionCount)
                        .newNonLinearModel()
                               .beginSection()
                               .setB(b1)
                               .setG(g1) // optional
                               .endSection()
                               .beginSection()
                               .setB(b2)
                               .setG(g2) // optional
                               .endSection()
                               .add()
                        .add();

Please also note that some methods has been renamed (e.g. getCurrentSection() has been renamed getSection()) and that to access attributes such as bPerSection, specific to linear model, you will have to retrieve the shunt compensator's model:

double bPerSection = shunt.getModel(ShuntCompensatorLinearModel.class).getBPerSection();

For more details, go to the documentation page on powsybl.org and the Javadoc of ShuntCompensator.

DanglingLine modelling

In some exchange format such as UCTE-DEF, it's possible to define an X-node that can hold a voltage target. With the previous XIIDM version, we had to sum the load and generation part into the P0 and Q0 attribute of the dangling line. During the export, this information is lost.

In this new version, it's possible to configure generation information for a DanglingLine:

DanglingLine dl = voltageLevel.newDanglingLine()
    ...
    .setP0(p0)  // Set the active load
    .setQ0(q0)  // Set the reactive load
    .newGeneration()
        .setMinP(minP)
        .setMaxP(maxP)
        .setTargetP(targetP)  // Set the active generation setpoint
        .setTargetQ(targetQ)  // Set the reactive generation setpoint
        .setTargetV(targetV)  // Set the voltage setpoint
        .setVoltageRegulationOn(true)
        .add()
    .add();

Note that the generation is optional.

Changes

Renaming of voltageSetPoint, activePowerSetPoint and reactivePowerSetPoint attributes

From this version, all attributes ending with setPoint will be written as setpoint without uppercase.

Clone this wiki locally