pub fn ordered<'a>(
slack: Option<&'a mut DistributedSlack>,
qlimits: Option<&'a mut ReactiveLimits>,
phase: Option<&'a mut PhaseControl>,
voltage: Option<&'a mut TransformerVoltageControl>,
) -> Vec<&'a mut dyn OuterLoop>Expand description
The order powsybl-open-loadflow applies by default, restricted to the loops gridoxide has: distributed slack innermost, then reactive limits, then the two tap controls.
The ordering is a physical claim rather than a convention — generators
respond faster than tap changers, so a tap should be chosen against a
reactive dispatch that has already settled, and re-examined when the tap
move disturbs it.
The loops are passed as &mut dyn rather than owned boxes so a caller
keeps its concrete values and can read their reports — DistributedSlack‘s
shifts, ReactiveLimits’ switches, a tap loop’s per-controller outcomes —
after the run, without downcasting.