Interface LoadFlowProvider

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

public interface LoadFlowProvider extends Versionable, PlatformConfigNamedProvider
Service Provider Interface for loadflow implementations.

A loadflow provider is required to implement the main method run(com.powsybl.iidm.network.Network, com.powsybl.computation.ComputationManager, java.lang.String, com.powsybl.loadflow.LoadFlowParameters, com.powsybl.commons.report.ReportNode), in charge of actually running a loadflow and updating the network variant with computed physical values.

It may, additionally, provide methods to support implementation-specific parameters. Specific parameters should be implemented as an implementation of Extension<LoadFlowParameters>.

Author:
Geoffroy Jamgotchian <geoffroy.jamgotchian at rte-france.com>
  • Method Details

    • findAll

      static List<LoadFlowProvider> findAll()
    • run

      CompletableFuture<LoadFlowResult> run(Network network, ComputationManager computationManager, String workingVariantId, LoadFlowParameters parameters, ReportNode reportNode)
      Run a loadflow on variant workingVariantId of network delegating external program execution to computationManager if necessary and using loadflow execution parameters. This method is expected to be stateless so that it can be call simultaneously with different arguments (a different network for instance) without any concurrency issue.
      Parameters:
      network - the network
      computationManager - a computation manager to external program execution
      workingVariantId - variant id of the network
      parameters - load flow execution parameters
      reportNode - the reportNode used for functional logs
      Returns:
      a CompletableFuture on {@link LoadFlowResult]
    • getSpecificParametersClass

      Optional<Class<? extends Extension<LoadFlowParameters>>> getSpecificParametersClass()
      Get specific parameters class.
      Returns:
      The specific parameters class
    • getSpecificParametersSerializer

      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<LoadFlowParameters, MyParametersExtension> where MyParametersExtension is the specific parameters class.

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

      Optional<Extension<LoadFlowParameters>> 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

      Optional<Extension<LoadFlowParameters>> 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.
    • createMapFromSpecificParameters

      Map<String,String> createMapFromSpecificParameters(Extension<LoadFlowParameters> extension)
      Create a `Map` of parameter name / `String` value from implementation-specific parameters. If the implementation does not have any specific parameters, `Map` is empty.
      Parameters:
      extension - the specific parameters
      Returns:
      A `Map` of parameter name / `String` value
    • updateSpecificParameters

      void updateSpecificParameters(Extension<LoadFlowParameters> extension, Map<String,String> properties)
      Updates implementation-specific parameters from a Map.
    • getSpecificParameters

      List<Parameter> getSpecificParameters()
      Get the parameters of the parameters extension associated with this provider.
      Returns:
      the parameters of the parameters extension associated with this provider.