-
Notifications
You must be signed in to change notification settings - Fork 43
Migration guide v6.2.0
If you have defined your own IIDM implementation, you should implement the following methods:
-
in your
Network
implementations:Iterable<OverloadManagementSystem> getOverloadManagementSystems()
Stream<OverloadManagementSystem> getOverloadManagementSystemStream()
int getOverloadManagementSystemCount()
OverloadManagementSystem getOverloadManagementSystem(String id)
-
in your
Substation
implementation:OverloadManagementSystemAdder newOverloadManagementSystem()
Iterable<OverloadManagementSystem> getOverloadManagementSystems()
Stream<OverloadManagementSystem> getOverloadManagementSystemStream()
int getOverloadManagementSystemCount()
If you have defined your own IIDM implementation, you should implement the following methods:
-
in your
Network
implementations:Iterable<Ground> getGrounds()
Stream<Ground> getGroundStream()
int getGroundCount()
Ground getGround(String id)
-
in your
VoltageLevel
implementation:GroundAdder newGround()
Iterable<Ground> getGrounds()
Stream<Ground> getGroundStream()
int getGroundCount()
-
in your
TopologyVisitor
implementation:void visitGround(Ground connectable)
If you have defined your own IIDM implementation, you should implement the following methods:
-
in your
RatioTapChanger
implementations:RegulationMode getRegulationMode()
RatioTapChanger setRegulationMode(RatioTapChanger.RegulationMode regulationMode)
double getRegulationValue()
RatioTapChanger setRegulationValue(double regulationValue)
-
in your
RatioTapChangerAdder
implementations:RatioTapChangerAdder setRegulationMode(RatioTapChanger.RegulationMode regulationMode)
RatioTapChangerAdder setRegulationValue(double regulationValue)
Besides, ValidationUtil.checkRatioTapChangerRegulation
methods take an additional parameter: regulationMode
, the regulation mode (note that targetV
parameter was also renamed in regulationValue
).
If you have defined your own IIDM implementation, you should implement the following methods:
- In your
PhaseTapChanger
andRatioTapChanger
implementations:-
... stepsReplacer()
.
-
If you have defined your own implementation of NetworkListener
without inheriting DefaultNetworkListener
, you should implement the following methods:
-
void onUpdate(Identifiable<?> identifiable, String attribute, String variantId, Object oldValue, Object newValue)
- This method previsouly existed with a default implementation which was removed
void onExtensionCreation(Extension<?> extension)
void onExtensionAfterRemoval(Identifiable<?> identifiable, String extensionName)
void onExtensionBeforeRemoval(Extension<?> extension)
void onExtensionUpdate(Extension<?> extendable, String attribute, Object oldValue, Object newValue)
The SecondaryVoltageControl
extension was refactored to use the newly introduced notification system for extensions.
To create a new SecondaryVoltageControl
extension, you should now use a builder:
- Before:
SecondaryVoltageControl control = network.newExtension(SecondaryVoltageControlAdder.class)
.addControlZone(new ControlZone("z1",
new PilotPoint(List.of("NLOAD"), 15d),
List.of(new ControlUnit("GEN", false), new ControlUnit("GEN2"))))
.add();
- After:
SecondaryVoltageControl control = network.newExtension(SecondaryVoltageControlAdder.class)
.newControlZone()
.withName("z1")
.newPilotPoint()
.withBusbarSectionsOrBusesIds(List.of("NLOAD"))
.withTargetV(15d)
.add()
.newControlUnit()
.withId("GEN")
.withParticipate(false)
.add()
.newControlUnit()
.withId("GEN2")
.add()
.add()
.add();
If you have defined your own implementation of SecondaryVoltageControl
, you should:
- define custom implementations for
PilotPoint
,ControlUnit
andControlZone
, and their respective adders. The default implementations which were provided were transferred iniidm-impl
to benefit from the notification system; - remove your implementation of
SecondaryVoltageControlAdder.addControlZone(ControlZone controlZone)
; - implement
SecondaryVoltageControlAdder.newControlZone()
.
The easiest way to do it is to can take your inspiration from the implementation classes located in iidm-impl
.
We did it! From this version, we add a check to ensure that when a connectable has temporary loading limits, it has a defined permanent limit. Note that it does not mean that a permanent limit is required for all equipments that could have one. In order to ensure compatibility with previous IIDM
version, if the permanent limit is missing, we fix it with a percentage of the lowest (in value) temporary limit, by default 100%. This percentage is configurable at import: for a different value, please use iidm.import.xml.missing-permanent-limit-percentage
parameter.
Starting from this release the four following methods have been added to Connectable
interface
boolean connect();
boolean connect(Predicate<Switch> isTypeSwitchToOperate);
boolean disconnect();
boolean disconnect(Predicate<Switch> isSwitchOpenable);
Hence, if you have defined your own implementation of Connectable
, you need to implement these methods.
When using the default IIDM implementation, at terminal connection/disconnection:
- the
"connection"
notifications that were emitted are replaced:- at connection by:
- a
"beginConnect"
notification before the connection. ItsoldValue
contains the previous connection state of the terminal; - a
"endConnect"
notification after the connection. ItsnewValue
contains the final connection state of the terminal;
- a
- at disconnection by:
- a
"beginDisconnect"
notification before the disconnection. ItsoldValue
containstrue
if the terminal was previously disconnected,false
otherwise; - a
"endDisconnect"
notification after the disconnection. ItsnewValue
containstrue
if the terminal is now disconnected, false otherwise;
- a
- at connection by:
- the
"connected"
notifications are replaced by"connected" + side number
notifications. The content of theiroldValue
andnewValue
attributes is unchanged.
If you have defined your own IIDM implementation, you should implement the following methods:
- in your
Terminal
implementations:ThreeSides getSide()
The LineConnectionAction
has been removed and replaced by TerminalsConnectionAction
. With this new remedial action, we can open or close one Terminal
, given by an element id and a side (instance of ThreeSide
). The side is optional: in that case, the remedial action means that the terminals of the element will be all opened or all closed. The element can be any connectable (line, transformers, injection, etc.). If the element is a TieLine
, terminals refer to the underlying dangling lines' terminals. If the element is a HvdcLine
, the terminals refer to the converter stations' terminals. In case of a two-terminal element, remember to use utility method to convert a ThreeSide
in a TwoSide
if you apply the remedial action on the network.
TODO or delete
TODO or delete
The following deprecated methods have been deleted:
TODO()
The following deprecated enum types have been deleted:
TODO