Interface SecurityAnalysisProvider

All Superinterfaces:
PlatformConfigNamedProvider, Versionable
All Known Implementing Classes:
DefaultSecurityAnalysisProvider

public interface SecurityAnalysisProvider extends Versionable, 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 <tadam at silicom.fr>
  • Method Details

    • findAll

      static List<SecurityAnalysisProvider> findAll()
    • run

      CompletableFuture<SecurityAnalysisReport> run(Network network, String workingVariantId, LimitViolationDetector detector, LimitViolationFilter filter, ComputationManager computationManager, SecurityAnalysisParameters parameters, ContingenciesProvider contingenciesProvider, List<SecurityAnalysisInterceptor> interceptors, List<OperatorStrategy> operatorStrategies, List<Action> actions, List<StateMonitor> monitors, List<LimitReduction> limitReductions, ReportNode reportNode)
      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
      limitReductions - list of the limit reductions to apply
      reportNode - the reportNode used for functional logs
      Returns:
      a CompletableFuture on SecurityAnalysisResult that gathers security factor values
    • getSpecificParametersSerializer

      default Optional<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<Extension<SecurityAnalysisParameters>> loadSpecificParameters(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<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(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.