Interface SecurityAnalysisProvider

  • All Superinterfaces:
    com.powsybl.commons.config.PlatformConfigNamedProvider, com.powsybl.commons.Versionable

    public interface SecurityAnalysisProvider
    extends com.powsybl.commons.Versionable, com.powsybl.commons.config.PlatformConfigNamedProvider
    A SecurityAnalysisProvider is a power system computation which computes, for a Network, the LimitViolations on N-situation and the ones caused by a specified list of Contingencies.

    Computation results are provided asynchronously as a SecurityAnalysisResult.

    Implementations of that interface may typically rely on an external tool.

    Interceptors might be used to execute client user-specific code on events such as the availability of N-situation results, for example to further customize the results content through Extensions.

    Author:
    Thomas Adam
    • Method Detail

      • run

        CompletableFuture<SecurityAnalysisReport> run​(Network network,
                                                      String workingVariantId,
                                                      LimitViolationDetector detector,
                                                      LimitViolationFilter filter,
                                                      com.powsybl.computation.ComputationManager computationManager,
                                                      SecurityAnalysisParameters parameters,
                                                      ContingenciesProvider contingenciesProvider,
                                                      List<SecurityAnalysisInterceptor> interceptors,
                                                      List<OperatorStrategy> operatorStrategies,
                                                      List<Action> actions,
                                                      List<StateMonitor> monitors,
                                                      com.powsybl.commons.reporter.Reporter reporter)
        Run an asynchronous single security analysis job.

        if there are exceptions thrown. But the original exception would be wrapped in ComputationException, and those .out/.err log file's contents are be collected in the ComputationException too.

         
         try {
               SecurityAnalysisResult result = securityAnalysis.run(network, variantId, detector, filter, computationManager, parameters, contingenciesProvider, interceptors).join();
           } catch (CompletionException e) {
               if (e.getCause() instanceof ComputationException) {
                   ComputationException computationException = (ComputationException) e.getCause();
                   System.out.println("Consume exception...");
                   computationException.getOutLogs().forEach((name, content) -> {
                       System.out.println("-----" + name + "----");
                       System.out.println(content);
                   });
                   computationException.getErrLogs().forEach((name, content) -> {
                       System.out.println("-----" + name + "----");
                       System.out.println(content);
                   });
               }
               throw e;
           }
         
        Parameters:
        network - IIDM network on which the security analysis will be performed
        workingVariantId - network variant ID on which the analysis will be performed
        detector -
        filter -
        computationManager -
        parameters - specific security analysis parameters
        contingenciesProvider - provides list of contingencies
        interceptors -
        monitors - stateMonitor that defines the branch bus and threeWindingsTransformer about which informations will be written after security analysis
        reporter - the reporter used for functional logs
        Returns:
        a CompletableFuture on SecurityAnalysisResult that gathers security factor values
      • getSpecificParametersSerializer

        default Optional<com.powsybl.commons.extensions.ExtensionJsonSerializer> getSpecificParametersSerializer()
        The serializer for implementation-specific parameters, or Optional.empty() if the implementation does not have any specific parameters, or does not support JSON serialization.

        Note that the actual serializer type should be ExtensionJsonSerializer<SecurityAnalysisParameters, MyParametersExtension> where MyParametersExtension is the specific parameters class.

        Returns:
        The serializer for implementation-specific parameters.
      • loadSpecificParameters

        default Optional<com.powsybl.commons.extensions.Extension<SecurityAnalysisParameters>> loadSpecificParameters​(com.powsybl.commons.config.PlatformConfig config)
        Reads implementation-specific parameters from platform config, or return Optional.empty() if the implementation does not have any specific parameters, or does not support loading from config.
        Returns:
        The specific parameters read from platform config.
      • loadSpecificParameters

        default Optional<com.powsybl.commons.extensions.Extension<SecurityAnalysisParameters>> loadSpecificParameters​(Map<String,​String> properties)
        Reads implementation-specific parameters from a Map, or return Optional.empty() if the implementation does not have any specific parameters, or does not support loading from config.
        Returns:
        The specific parameters read from Map.
      • updateSpecificParameters

        default void updateSpecificParameters​(com.powsybl.commons.extensions.Extension<SecurityAnalysisParameters> extension,
                                              Map<String,​String> properties)
        Updates implementation-specific parameters from a Map.
      • getLoadFlowProviderName

        default Optional<String> getLoadFlowProviderName()
        Returns:
        The name of the loadflow used for the security analysis.
      • getSpecificParametersNames

        default List<String> getSpecificParametersNames()
        get the list of the specific parameters names.
        Returns:
        the list of the specific parameters names.