-
Notifications
You must be signed in to change notification settings - Fork 43
IIDM & XIIDM 1.3 evolutions
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
.
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.
From this version, all attributes ending with setPoint
will be written as setpoint
without uppercase.