[WIP] Returning real slack buses mismatches in SlackBusResult when using multiple slacks #1161
+16
−15
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Please check if the PR fulfills these requirements
Does this PR already have an issue describing the problem?
No
What kind of change does this PR introduce?
When using multi-slack, the returned slack buses result returned the same mismatch for all the slackbuses which is. This approach can be wrong because the mismatches may not be exactly the same between slack buses depending on the solver criterias.
Moreover, this led to hide a wrong slack distribution use case (fixed in #1160) where the global mismatch was almost zero but unequally distributed between slack buses (because of the presence of a load in the first slack and wrong equation definition in this case).
This PR proposes to display the real mismatch in each slack bus independently.
What is the current behavior?
Currently, the component result has a SlackBusResult list containing the same mismatch for each slack bus which equals to : SlackBusMismatch/nbSlack.
What is the new behavior (if this is a feature change)?
In the new behavior, each SlackBusResult has a mismatch corresponding to SlackBus.getMismatchP().
NB : This introduces a functional change which is the handling of SlackbusFailureBehaviour.FAIL which leads to have the initial mismatch as the displayed mismatch in each bus since no distribution has been done.
A cleaner way to do such a change would be to introduce the breaking change of having SlackBusResult list instead of a SlackBusActivePowerMismatch in the LoadFlowResult interface in order to display only data that is contained in the LoadFlow result (instead of computing each MismatchP in the final network to retreive the correct mismatches) but such a major refactoring is not done in this PR. This can be discussed.
Does this PR introduce a breaking change or deprecate an API?