Source code for pypowsybl.sensitivity.impl.parameters

# Copyright (c) 2023, RTE (http://www.rte-france.com)
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# SPDX-License-Identifier: MPL-2.0
#
from typing import Dict, Optional
from pypowsybl.loadflow import Parameters as LfParameters
from pypowsybl.loadflow.impl.util import parameters_from_c
from pypowsybl import _pypowsybl


[docs] class Parameters: # pylint: disable=too-few-public-methods """ Parameters for a sensitivity analysis execution. All parameters are first read from you configuration file, then overridden with the constructor arguments. Please note that sensitivity providers may not honor all parameters, according to their capabilities. The exact behaviour of some parameters may also depend on your sensitivity provider. Please check the documentation of your provider for that information. .. currentmodule:: pypowsybl.sensitivity Args: load_flow_parameters: parameters that are common to loadflow and sensitivity analysis provider_parameters: Define parameters linked to the sensitivity analysis provider the names of the existing parameters can be found with method ``get_provider_parameters_names`` """ def __init__(self, load_flow_parameters: Optional[LfParameters] = None, provider_parameters: Optional[Dict[str, str]] = None, flow_flow_sensitivity_value_threshold: Optional[float] = None, voltage_voltage_sensitivity_value_threshold: Optional[float] = None, flow_voltage_sensitivity_value_threshold: Optional[float] = None, angle_flow_sensitivity_value_threshold: Optional[float] = None,): self._init_with_default_values() if load_flow_parameters is not None: self.load_flow_parameters = load_flow_parameters if provider_parameters is not None: self.provider_parameters = provider_parameters if flow_flow_sensitivity_value_threshold is not None: self.flow_flow_sensitivity_value_threshold = flow_flow_sensitivity_value_threshold if voltage_voltage_sensitivity_value_threshold is not None: self.voltage_voltage_sensitivity_value_threshold = voltage_voltage_sensitivity_value_threshold if flow_voltage_sensitivity_value_threshold is not None: self.flow_voltage_sensitivity_value_threshold = flow_voltage_sensitivity_value_threshold if angle_flow_sensitivity_value_threshold is not None: self.angle_flow_sensitivity_value_threshold = angle_flow_sensitivity_value_threshold def _init_with_default_values(self) -> None: default_parameters = _pypowsybl.SensitivityAnalysisParameters() self.flow_flow_sensitivity_value_threshold = default_parameters.flow_flow_sensitivity_value_threshold self.voltage_voltage_sensitivity_value_threshold = default_parameters.voltage_voltage_sensitivity_value_threshold self.flow_voltage_sensitivity_value_threshold = default_parameters.flow_voltage_sensitivity_value_threshold self.angle_flow_sensitivity_value_threshold = default_parameters.angle_flow_sensitivity_value_threshold self.load_flow_parameters = parameters_from_c(default_parameters.loadflow_parameters) self.provider_parameters = dict( zip(default_parameters.provider_parameters_keys, default_parameters.provider_parameters_values)) def _to_c_parameters(self) -> _pypowsybl.SensitivityAnalysisParameters: c_parameters = _pypowsybl.SensitivityAnalysisParameters() c_parameters.flow_flow_sensitivity_value_threshold = self.flow_flow_sensitivity_value_threshold c_parameters.voltage_voltage_sensitivity_value_threshold = self.voltage_voltage_sensitivity_value_threshold c_parameters.flow_voltage_sensitivity_value_threshold = self.flow_voltage_sensitivity_value_threshold c_parameters.angle_flow_sensitivity_value_threshold = self.angle_flow_sensitivity_value_threshold c_parameters.loadflow_parameters = self.load_flow_parameters._to_c_parameters() # pylint: disable=protected-access c_parameters.provider_parameters_keys = list(self.provider_parameters.keys()) c_parameters.provider_parameters_values = list(self.provider_parameters.values()) return c_parameters def __repr__(self) -> str: return f"{self.__class__.__name__}(" \ f"flow_flow_sensitivity_value_threshold={self.flow_flow_sensitivity_value_threshold}" \ f", voltage_voltage_sensitivity_value_threshold={self.voltage_voltage_sensitivity_value_threshold}" \ f", flow_voltage_sensitivity_value_threshold={self.flow_voltage_sensitivity_value_threshold}" \ f", angle_flow_sensitivity_value_threshold={self.angle_flow_sensitivity_value_threshold}" \ f", load_flow_parameters={self.load_flow_parameters}" \ f", provider_parameters={self.provider_parameters!r}" \ f")"