Skip to content

Evolution of the sensitivity analysis ResultWriter and Result to support multi-component computation, improve diagnostic and support cancel #3626

@vidaldid-rte

Description

@vidaldid-rte

Describe the current behavior

The sensitivity analysis has currently some limitations.
- No support of multi-component computation (no way to report if a base simulation succeeds on one component but fails on another)
- No indication of the cause of a failure to compute a contingency, compared to what is reported for a loadflow run. It makes it hard to troubleshoot issues when results are missing for a contingency.
- No indication whether the result is complete or only partial, if the operation has been canceled and the thread interrupted.

Describe the expected behavior

To address these limiations, we propose to extend the ResultWriter as follow:

public interface SensitivityResultWriter {

   // No API change - meaning below in the case of multi-component computation
    // A factor has a variable that is linked to en equipement that is in a single component
    // Called once per factor and contingency in the factor context that belongs to the same component as the factor equipment
    // Nan for invalid factors whose equipement does not belongs to a component that has been run
    void writeSensitivityValue(int factorIndex, int contingencyIndex, double value, double functionReference);


    // 3 new parameters
    // Called for every contigency and every numCC/numCS where the contingency has an impact
    // For contingencies that are never run, called once in the end with no IMPACT and numCC and numCs set to -1
    void writeContingencyStatus(int contingencyIndex, SensitivityAnalysisResult.Status status, SensitivityAnalysisResult.LoadFlowStatus loadFlowStatus, int numCC, int numCs);


   // new method
    void writeSynchronousComponentStatus(int numCC, int numCS, SensitivityAnalysisResult.LoadFlowStatus loadFlowStatus);

    // Called at the end of the computation if the computation has not been interrupted
    void computationComplete();

    // Record to be added in the SensitivityAnalysisResult class
    record LoadFlowStatus (LoadFlowResult.ComponentResult.Status status, String statusText) {
    }
}

Describe the motivation

Enable to add multi-component support for sensitivity analysis inOpenLoadFlow
Enable to return partial results in case of interruption
Enable a better diagnosis of contingency failure

Extra Information

No response

Metadata

Metadata

Assignees

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions